Merge tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 Sep 2021 22:39:09 +0000 (15:39 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 Sep 2021 22:39:09 +0000 (15:39 -0700)
Pull ARM SoC DT updates from Arnd Bergmann:
 "As usual, the bulk of work in the SoC tree goes into DT files, this
  time with a roughly even split between 32-bit and 64-bit SoCs rather
  than the usual mostly 64-bit changes.

  New SoCs:

   - Microchip SAMA7 SoC family based on Cortex-A7, a new 32-bit
     platform based on the older SAMA5 series.

   - Qualcomm Snapdragon SDM636 and SM8150, variations of the existing
     phone SoCs.

   - Renesas R-Car H3e-2G and M3e-2G SoCs, variations of older Renesas
     SoCs.

  New boards:

   - Marvell CN913x reference boards

   - ASpeed AST2600 BMC implementations for Facebook Cloudripper, Elbert
     and Fuji server boards.

   - Snapdragon 665 based Sony Xperia 10II

   - Snapdragon MSM8916 based Xiaomi Redmi 2

   - Snapdragon MSM8226 based Samsung Galaxy S3 Neo

   - NXP i.MX based 32-bit boards:
       - DHCOM based PicoITX
       - DHSOM based DRC0ỉ
       - SolidRun SolidSense
       - SKOV i.MX6 boards.

   - NXP i.MX based 64-bit boards:
       - Nitrogen8 SoM and MNT Reform2
       - LS1088A based Traverse Ten64
       - i.MX8M based GW7902.

   - NVIDIA Jetson TX2 NX Developer Kit

   - 4KOpen STiH418-b2264 development board

   - ux500 based Samsung phones: Gavini, Codina and Kyle

   - TI AM335x based Sancloud BBE Lite

   - ixp4xx dts files to replace all old board files

  Other changes:

   - Treewide fixes for dtc warnings

   - Rockchips i/o domain support

   - TI OMAP/AM3 CPSW switch driver support

   - Improved device support for allwinner, aspeed, qualcomm, NXP,
     nvidia, Renesas, Samsung, Amlogic, Mediatek, ixp4xx, stm32, sti,
     OMAP and actions"

* tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (412 commits)
  arm/arm64: dts: Fix remaining dtc 'unit_address_format' warnings
  ARM: dts: rockchip: Add SFC to RV1108
  arm64: dts: marvell: armada-37xx: Extend PCIe MEM space
  ARM: dts: aspeed: p10bmc: Add power control pins
  ARM: dts: aspeed: cloudripper: Add comments for "mdio1"
  ARM: dts: aspeed: minipack: Update flash partition table
  dt-bindings: arm: fsl: Add Traverse Ten64 (LS1088A) board
  dt-bindings: vendor-prefixes: add Traverse Technologies
  arm64: dts: add device tree for Traverse Ten64 (LS1088A)
  arm64: dts: ls1088a: add missing PMU node
  arm64: dts: ls1088a: add internal PCS for DPMAC1 node
  ARM: dts: imx6qp-prtwd3: configure ENET_REF clock to 125MHz
  ARM: dts: vf610-zii-dev-rev-b: Remove #address-cells and #size-cells property from at93c46d dt node
  ARM: dts: add SKOV imx6q and imx6dl based boards
  dt-bindings: arm: fsl: add SKOV imx6q and imx6dl based boards
  dt-bindings: vendor-prefixes: Add an entry for SKOV A/S
  arm64: dts: imx8mq-reform2: add sound support
  arm64: dts: imx8m: drop interrupt-affinity for pmu
  arm64: dts: imx8qxp: update pmu compatible
  arm64: dts: imx8mm: update pmu compatible
  ...

406 files changed:
Documentation/devicetree/bindings/arm/atmel-at91.yaml
Documentation/devicetree/bindings/arm/atmel-sysregs.txt
Documentation/devicetree/bindings/arm/fsl.yaml
Documentation/devicetree/bindings/arm/qcom.yaml
Documentation/devicetree/bindings/arm/renesas.yaml
Documentation/devicetree/bindings/arm/tegra.yaml
Documentation/devicetree/bindings/gpio/aspeed,sgpio.yaml [new file with mode: 0644]
Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt [deleted file]
Documentation/devicetree/bindings/i2c/renesas,riic.yaml
Documentation/devicetree/bindings/mailbox/mtk-gce.txt
Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
Documentation/devicetree/bindings/vendor-prefixes.yaml
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-baltos-ir2110.dts
arch/arm/boot/dts/am335x-baltos-ir3220.dts
arch/arm/boot/dts/am335x-baltos-ir5221.dts
arch/arm/boot/dts/am335x-baltos.dtsi
arch/arm/boot/dts/am335x-bone-common.dtsi
arch/arm/boot/dts/am335x-boneblack-common.dtsi
arch/arm/boot/dts/am335x-boneblack-hdmi.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am335x-boneblack-wireless.dts
arch/arm/boot/dts/am335x-boneblack.dts
arch/arm/boot/dts/am335x-boneblue.dts
arch/arm/boot/dts/am335x-bonegreen-wireless.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-icev2.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-2101.dts
arch/arm/boot/dts/am335x-moxa-uc-8100-common.dtsi
arch/arm/boot/dts/am335x-myirtech-myc.dtsi
arch/arm/boot/dts/am335x-myirtech-myd.dts
arch/arm/boot/dts/am335x-nano.dts
arch/arm/boot/dts/am335x-netcan-plus-1xx.dts
arch/arm/boot/dts/am335x-netcom-plus-2xx.dts
arch/arm/boot/dts/am335x-netcom-plus-8xx.dts
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-phycore-som.dtsi
arch/arm/boot/dts/am335x-regor.dtsi
arch/arm/boot/dts/am335x-sancloud-bbe-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am335x-sancloud-bbe-lite.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-sancloud-bbe.dts
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/am4372.dtsi
arch/arm/boot/dts/am437x-cm-t43.dts
arch/arm/boot/dts/am437x-gp-evm.dts
arch/arm/boot/dts/am437x-idk-evm.dts
arch/arm/boot/dts/am437x-sk-evm.dts
arch/arm/boot/dts/am43x-epos-evm.dts
arch/arm/boot/dts/am57-pruss.dtsi
arch/arm/boot/dts/am571x-idk.dts
arch/arm/boot/dts/am572x-idk.dts
arch/arm/boot/dts/am5748.dtsi
arch/arm/boot/dts/am574x-idk.dts
arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
arch/arm/boot/dts/am57xx-cl-som-am57x.dts
arch/arm/boot/dts/aspeed-ast2500-evb.dts
arch/arm/boot/dts/aspeed-bmc-facebook-cloudripper.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-facebook-elbert.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-facebook-galaxy100.dts
arch/arm/boot/dts/aspeed-bmc-facebook-minipack.dts
arch/arm/boot/dts/aspeed-bmc-facebook-wedge100.dts
arch/arm/boot/dts/aspeed-bmc-facebook-wedge40.dts
arch/arm/boot/dts/aspeed-bmc-facebook-wedge400.dts
arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts
arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
arch/arm/boot/dts/aspeed-bmc-inspur-nf5280m6.dts [new file with mode: 0644]
arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
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/ast2400-facebook-netbmc-common.dtsi
arch/arm/boot/dts/ast2600-facebook-netbmc-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-kizbox3_common.dtsi
arch/arm/boot/dts/at91-sam9x60ek.dts
arch/arm/boot/dts/at91-sama5d27_som1.dtsi
arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
arch/arm/boot/dts/at91-sama5d27_wlsom1_ek.dts
arch/arm/boot/dts/at91-sama5d2_icp.dts
arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
arch/arm/boot/dts/at91-sama5d2_xplained.dts
arch/arm/boot/dts/at91-sama5d3_xplained.dts
arch/arm/boot/dts/at91-sama5d4_xplained.dts
arch/arm/boot/dts/at91-sama7g5ek.dts [new file with mode: 0644]
arch/arm/boot/dts/dm8148-evm.dts
arch/arm/boot/dts/dm8168-evm.dts
arch/arm/boot/dts/dra74x-p.dtsi [new file with mode: 0644]
arch/arm/boot/dts/dra76x.dtsi
arch/arm/boot/dts/exynos3250.dtsi
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4412.dtsi
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5260.dtsi
arch/arm/boot/dts/exynos5420-cpus.dtsi
arch/arm/boot/dts/exynos5422-cpus.dtsi
arch/arm/boot/dts/facebook-bmc-flash-layout-128.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-dhcom-picoitx.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6dl-solidsense.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-dhcom-pdk2.dts
arch/arm/boot/dts/imx6q-dhcom-som.dtsi [deleted file]
arch/arm/boot/dts/imx6q-skov-revc-lt2.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-skov-revc-lt6.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-skov-reve-mi1010ait-1cp1.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6q-solidsense.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-dhcom-drc02.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-dhcom-pdk2.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
arch/arm/boot/dts/imx6qdl-gw553x.dtsi
arch/arm/boot/dts/imx6qdl-gw5904.dtsi
arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-solidsense.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx6qp-prtwd3.dts
arch/arm/boot/dts/imx6s-dhcom-drc02.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7d-remarkable2.dts
arch/arm/boot/dts/imx7s.dtsi
arch/arm/boot/dts/integratorap-im-pd1.dts
arch/arm/boot/dts/intel-ixp42x-adi-coyote.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-arcom-vulcan.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-freecom-fsg-3.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-gateworks-gw2348.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-ixdp425.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-ixdpg425.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-linksys-nslu2.dts
arch/arm/boot/dts/intel-ixp42x-linksys-wrv54g.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-netgear-wg302v2.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp42x-welltech-epbx100.dts
arch/arm/boot/dts/intel-ixp42x.dtsi
arch/arm/boot/dts/intel-ixp43x-gateworks-gw2358.dts
arch/arm/boot/dts/intel-ixp43x-kixrp435.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp43x.dtsi
arch/arm/boot/dts/intel-ixp45x-ixp46x.dtsi
arch/arm/boot/dts/intel-ixp46x-ixdp465.dts [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp4xx-reference-design.dtsi [new file with mode: 0644]
arch/arm/boot/dts/intel-ixp4xx.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/meson.dtsi
arch/arm/boot/dts/meson8.dtsi
arch/arm/boot/dts/meson8b-ec100.dts
arch/arm/boot/dts/meson8b-mxq.dts
arch/arm/boot/dts/meson8b-odroidc1.dts
arch/arm/boot/dts/meson8b.dtsi
arch/arm/boot/dts/mt7623.dtsi
arch/arm/boot/dts/nuvoton-npcm750-evb.dts
arch/arm/boot/dts/omap4-l4-abe.dtsi
arch/arm/boot/dts/owl-s500-roseapplepi.dts
arch/arm/boot/dts/owl-s500.dtsi
arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
arch/arm/boot/dts/qcom-apq8064.dtsi
arch/arm/boot/dts/qcom-ipq8064.dtsi
arch/arm/boot/dts/qcom-msm8226-samsung-s3ve3g.dts [new file with mode: 0644]
arch/arm/boot/dts/qcom-msm8226.dtsi [new file with mode: 0644]
arch/arm/boot/dts/qcom-msm8974-samsung-klte.dts
arch/arm/boot/dts/qcom-msm8974-sony-xperia-castor.dts
arch/arm/boot/dts/qcom-msm8974.dtsi
arch/arm/boot/dts/qcom-sdx55.dtsi
arch/arm/boot/dts/r7s72100.dtsi
arch/arm/boot/dts/r7s9210.dtsi
arch/arm/boot/dts/r8a73a4.dtsi
arch/arm/boot/dts/r8a7742.dtsi
arch/arm/boot/dts/r8a7743.dtsi
arch/arm/boot/dts/r8a7744.dtsi
arch/arm/boot/dts/rk3066a.dtsi
arch/arm/boot/dts/rk3188.dtsi
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/rv1108.dtsi
arch/arm/boot/dts/sama7g5-pinfunc.h [new file with mode: 0644]
arch/arm/boot/dts/sama7g5.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ste-ab8500.dtsi
arch/arm/boot/dts/ste-ab8505.dtsi
arch/arm/boot/dts/ste-db8500.dtsi
arch/arm/boot/dts/ste-db8520.dtsi
arch/arm/boot/dts/ste-db9500.dtsi
arch/arm/boot/dts/ste-dbx5x0-pinctrl.dtsi
arch/arm/boot/dts/ste-href.dtsi
arch/arm/boot/dts/ste-snowball.dts
arch/arm/boot/dts/ste-ux500-samsung-codina.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-ux500-samsung-gavini.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-ux500-samsung-golden.dts
arch/arm/boot/dts/ste-ux500-samsung-janice.dts
arch/arm/boot/dts/ste-ux500-samsung-kyle.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-ux500-samsung-skomer.dts
arch/arm/boot/dts/stih407-b2120.dts
arch/arm/boot/dts/stih407-clock.dtsi
arch/arm/boot/dts/stih407-family.dtsi
arch/arm/boot/dts/stih410-b2120.dts
arch/arm/boot/dts/stih410-b2260.dts
arch/arm/boot/dts/stih410-clock.dtsi
arch/arm/boot/dts/stih418-b2199.dts
arch/arm/boot/dts/stih418-b2264.dts [new file with mode: 0644]
arch/arm/boot/dts/stih418-clock.dtsi
arch/arm/boot/dts/stih418.dtsi
arch/arm/boot/dts/stm32429i-eval.dts
arch/arm/boot/dts/stm32f469-disco.dts
arch/arm/boot/dts/stm32mp157c-ed1.dts
arch/arm/boot/dts/stm32mp15xx-dhcom-drc02.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
arch/arm/boot/dts/tegra114-dalmore.dts
arch/arm/boot/dts/tegra124-apalis-v1.2.dtsi
arch/arm/boot/dts/tegra124-apalis.dtsi
arch/arm/boot/dts/tegra124-jetson-tk1.dts
arch/arm/boot/dts/tegra124-nyan.dtsi
arch/arm/boot/dts/tegra20-acer-a500-picasso.dts
arch/arm/boot/dts/tegra20-paz00.dts
arch/arm/boot/dts/tegra20-tamonten.dtsi
arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi
arch/arm/boot/dts/tegra30-cardhu.dtsi
arch/arm/boot/dts/tegra30-ouya.dts
arch/arm/boot/dts/tegra30.dtsi
arch/arm/boot/dts/vf610-zii-dev-rev-b.dts
arch/arm/boot/dts/zynq-7000.dtsi
arch/arm/boot/dts/zynq-ebaz4205.dts
arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-nanopi-k2.dts
arch/arm64/boot/dts/amlogic/meson-gxbb-vega-s95.dtsi
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
arch/arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts
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-ls1046a-frwy.dts
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-ls1088a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-ls1088a-ten64.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
arch/arm64/boot/dts/freescale/fsl-ls2088a-rdb.dts
arch/arm64/boot/dts/freescale/fsl-lx2160a-rdb.dts
arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mm-venice-gw700x.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw71xx.dtsi
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7902.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mm.dtsi
arch/arm64/boot/dts/freescale/imx8mn-venice-gw7902.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mn.dtsi
arch/arm64/boot/dts/freescale/imx8mp.dtsi
arch/arm64/boot/dts/freescale/imx8mq-evk.dts
arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mq-nitrogen-som.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mq.dtsi
arch/arm64/boot/dts/freescale/imx8qm-ss-img.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8qm.dtsi
arch/arm64/boot/dts/freescale/imx8qxp-ai_ml.dts
arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8qxp.dtsi
arch/arm64/boot/dts/hisilicon/hi3660.dtsi
arch/arm64/boot/dts/marvell/Makefile
arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
arch/arm64/boot/dts/marvell/armada-37xx.dtsi
arch/arm64/boot/dts/marvell/armada-7040-db.dts
arch/arm64/boot/dts/marvell/armada-8040-clearfog-gt-8k.dts
arch/arm64/boot/dts/marvell/armada-8040-db.dts
arch/arm64/boot/dts/marvell/cn9130-crb-A.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130-crb-B.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130-crb.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130-db-B.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9130-db.dts
arch/arm64/boot/dts/marvell/cn9130-db.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9131-db-B.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9131-db.dts
arch/arm64/boot/dts/marvell/cn9131-db.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9132-db-B.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/cn9132-db.dts
arch/arm64/boot/dts/marvell/cn9132-db.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8173-elm.dtsi
arch/arm64/boot/dts/mediatek/mt8173-evb.dts
arch/arm64/boot/dts/mediatek/mt8173.dtsi
arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi
arch/arm64/boot/dts/mediatek/mt8183.dtsi
arch/arm64/boot/dts/nvidia/Makefile
arch/arm64/boot/dts/nvidia/tegra132.dtsi
arch/arm64/boot/dts/nvidia/tegra186-p3509-0000+p3636-0001.dts [new file with mode: 0644]
arch/arm64/boot/dts/nvidia/tegra186.dtsi
arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi
arch/arm64/boot/dts/nvidia/tegra194.dtsi
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
arch/arm64/boot/dts/qcom/apq8096-ifc6640.dts
arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts
arch/arm64/boot/dts/qcom/ipq6018.dtsi
arch/arm64/boot/dts/qcom/ipq8074-hk01.dts
arch/arm64/boot/dts/qcom/ipq8074.dtsi
arch/arm64/boot/dts/qcom/msm8916-mtp.dts
arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/qcom/msm8994.dtsi
arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi
arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-dora.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-kagura.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-keyaki.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8996.dtsi
arch/arm64/boot/dts/qcom/msm8998.dtsi
arch/arm64/boot/dts/qcom/pm660.dtsi
arch/arm64/boot/dts/qcom/pm660l.dtsi
arch/arm64/boot/dts/qcom/pm8004.dtsi
arch/arm64/boot/dts/qcom/pm8150b.dtsi
arch/arm64/boot/dts/qcom/pmi8996.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sa8155p-adp.dts
arch/arm64/boot/dts/qcom/sc7180-trogdor-coachz.dtsi
arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi
arch/arm64/boot/dts/qcom/sc7180.dtsi
arch/arm64/boot/dts/qcom/sc7280-idp.dts
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7280-idp2.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sc7280.dtsi
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges-kirin.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges.dtsi [deleted file]
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-discovery.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-pioneer.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile-voyager.dts
arch/arm64/boot/dts/qcom/sdm630-sony-xperia-nile.dtsi
arch/arm64/boot/dts/qcom/sdm630.dtsi
arch/arm64/boot/dts/qcom/sdm636-sony-xperia-ganges-mermaid.dts
arch/arm64/boot/dts/qcom/sdm636.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts
arch/arm64/boot/dts/qcom/sdm660.dtsi
arch/arm64/boot/dts/qcom/sdm845-mtp.dts
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi
arch/arm64/boot/dts/qcom/sdm845.dtsi
arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm6125.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/sm8150-mtp.dts
arch/arm64/boot/dts/qcom/sm8150.dtsi
arch/arm64/boot/dts/qcom/sm8250.dtsi
arch/arm64/boot/dts/qcom/sm8350-hdk.dts
arch/arm64/boot/dts/qcom/sm8350-mtp.dts
arch/arm64/boot/dts/qcom/sm8350.dtsi
arch/arm64/boot/dts/renesas/Makefile
arch/arm64/boot/dts/renesas/beacon-renesom-baseboard.dtsi
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi
arch/arm64/boot/dts/renesas/r8a774a1.dtsi
arch/arm64/boot/dts/renesas/r8a774b1.dtsi
arch/arm64/boot/dts/renesas/r8a774c0.dtsi
arch/arm64/boot/dts/renesas/r8a77950-salvator-x.dts
arch/arm64/boot/dts/renesas/r8a77950-ulcb-kf.dts
arch/arm64/boot/dts/renesas/r8a77950-ulcb.dts
arch/arm64/boot/dts/renesas/r8a77950.dtsi
arch/arm64/boot/dts/renesas/r8a77951-salvator-x.dts
arch/arm64/boot/dts/renesas/r8a77951-salvator-xs.dts
arch/arm64/boot/dts/renesas/r8a77951-ulcb-kf.dts
arch/arm64/boot/dts/renesas/r8a77951-ulcb.dts
arch/arm64/boot/dts/renesas/r8a77951.dtsi
arch/arm64/boot/dts/renesas/r8a77960-ulcb-kf.dts
arch/arm64/boot/dts/renesas/r8a77960-ulcb.dts
arch/arm64/boot/dts/renesas/r8a77961-ulcb-kf.dts
arch/arm64/boot/dts/renesas/r8a77961-ulcb.dts
arch/arm64/boot/dts/renesas/r8a77961.dtsi
arch/arm64/boot/dts/renesas/r8a77965-salvator-xs.dts
arch/arm64/boot/dts/renesas/r8a77965-ulcb-kf.dts
arch/arm64/boot/dts/renesas/r8a77965-ulcb.dts
arch/arm64/boot/dts/renesas/r8a77965.dtsi
arch/arm64/boot/dts/renesas/r8a77970-eagle.dts
arch/arm64/boot/dts/renesas/r8a77980-condor.dts
arch/arm64/boot/dts/renesas/r8a77990-ebisu.dts
arch/arm64/boot/dts/renesas/r8a77990.dtsi
arch/arm64/boot/dts/renesas/r8a77995-draak.dts
arch/arm64/boot/dts/renesas/r8a77995.dtsi
arch/arm64/boot/dts/renesas/r8a779a0-falcon.dts
arch/arm64/boot/dts/renesas/r8a779a0.dtsi
arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m1.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r8a779m3.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/renesas/r9a07g044.dtsi
arch/arm64/boot/dts/renesas/salvator-common.dtsi
arch/arm64/boot/dts/renesas/salvator-xs.dtsi
arch/arm64/boot/dts/ti/k3-am64-main.dtsi
arch/arm64/boot/dts/ti/k3-am642-evm.dts
arch/arm64/boot/dts/ti/k3-am642-sk.dts
include/dt-bindings/clock/r9a07g044-cpg.h

index 6fc5a22..fba071b 100644 (file)
@@ -145,6 +145,11 @@ properties:
           - const: atmel,sama5d4
           - const: atmel,sama5
 
+      - items:
+          - const: microchip,sama7g5ek # SAMA7G5 Evaluation Kit
+          - const: microchip,sama7g5
+          - const: microchip,sama7
+
       - items:
           - enum:
               - atmel,sams70j19
index 807264a..16eef60 100644 (file)
@@ -45,7 +45,8 @@ RAMC SDRAM/DDR Controller required properties:
                        "atmel,at91sam9260-sdramc",
                        "atmel,at91sam9g45-ddramc",
                        "atmel,sama5d3-ddramc",
-                       "microchip,sam9x60-ddramc"
+                       "microchip,sam9x60-ddramc",
+                       "microchip,sama7g5-uddrc"
 - reg: Should contain registers location and length
 
 Examples:
@@ -55,6 +56,17 @@ Examples:
                reg = <0xffffe800 0x200>;
        };
 
+RAMC PHY Controller required properties:
+- compatible: Should be "microchip,sama7g5-ddr3phy", "syscon"
+- reg: Should contain registers location and length
+
+Example:
+
+       ddr3phy: ddr3phy@e3804000 {
+               compatible = "microchip,sama7g5-ddr3phy", "syscon";
+               reg = <0xe3804000 0x1000>;
+};
+
 SHDWC Shutdown Controller
 
 required properties:
index 1c827c1..60f4862 100644 (file)
@@ -221,9 +221,13 @@ properties:
               - prt,prti6q                # Protonic PRTI6Q board
               - prt,prtwd2                # Protonic WD2 board
               - rex,imx6q-rex-pro         # Rex Pro i.MX6 Quad Board
+              - skov,imx6q-skov-revc-lt2  # SKOV IMX6 CPU QuadCore lt2
+              - skov,imx6q-skov-revc-lt6  # SKOV IMX6 CPU QuadCore lt6
+              - skov,imx6q-skov-reve-mi1010ait-1cp1 # SKOV IMX6 CPU QuadCore mi1010ait-1cp1
               - solidrun,cubox-i/q        # SolidRun Cubox-i Dual/Quad
               - solidrun,hummingboard/q
               - solidrun,hummingboard2/q
+              - solidrun,solidsense/q     # SolidRun SolidSense Dual/Quad
               - tbs,imx6q-tbs2910         # TBS2910 Matrix ARM mini PC
               - technexion,imx6q-pico-dwarf   # TechNexion i.MX6Q Pico-Dwarf
               - technexion,imx6q-pico-hobbit  # TechNexion i.MX6Q Pico-Hobbit
@@ -377,9 +381,12 @@ properties:
               - prt,prtvt7                # Protonic VT7 board
               - rex,imx6dl-rex-basic      # Rex Basic i.MX6 Dual Lite Board
               - riot,imx6s-riotboard      # RIoTboard i.MX6S
+              - skov,imx6dl-skov-revc-lt2 # SKOV IMX6 CPU SoloCore lt2
+              - skov,imx6dl-skov-revc-lt6 # SKOV IMX6 CPU SoloCore lt6
               - solidrun,cubox-i/dl            # SolidRun Cubox-i Solo/DualLite
               - solidrun,hummingboard/dl
               - solidrun,hummingboard2/dl      # SolidRun HummingBoard2 Solo/DualLite
+              - solidrun,solidsense/dl         # SolidRun SolidSense Solo/DualLite
               - technexion,imx6dl-pico-dwarf   # TechNexion i.MX6DL Pico-Dwarf
               - technexion,imx6dl-pico-hobbit  # TechNexion i.MX6DL Pico-Hobbit
               - technexion,imx6dl-pico-nymph   # TechNexion i.MX6DL Pico-Nymph
@@ -418,6 +425,12 @@ properties:
           - const: dfi,fs700e-m60
           - const: fsl,imx6dl
 
+      - description: i.MX6DL DHCOM PicoITX Board
+        items:
+          - const: dh,imx6dl-dhcom-picoitx
+          - const: dh,imx6dl-dhcom-som
+          - const: fsl,imx6dl
+
       - description: i.MX6DL Gateworks Ventana Boards
         items:
           - enum:
@@ -469,6 +482,12 @@ properties:
           - const: toradex,colibri_imx6dl          # Colibri iMX6 Module
           - const: fsl,imx6dl
 
+      - description: i.MX6S DHCOM DRC02 Board
+        items:
+          - const: dh,imx6s-dhcom-drc02
+          - const: dh,imx6s-dhcom-som
+          - const: fsl,imx6dl
+
       - description: i.MX6SL based Boards
         items:
           - enum:
@@ -698,6 +717,7 @@ properties:
               - gw,imx8mm-gw72xx-0x       # i.MX8MM Gateworks Development Kit
               - gw,imx8mm-gw73xx-0x       # i.MX8MM Gateworks Development Kit
               - gw,imx8mm-gw7901          # i.MX8MM Gateworks Board
+              - gw,imx8mm-gw7902          # i.MX8MM Gateworks Board
               - kontron,imx8mm-n801x-som  # i.MX8MM Kontron SL (N801X) SOM
               - variscite,var-som-mx8mm   # i.MX8MM Variscite VAR-SOM-MX8MM module
           - const: fsl,imx8mm
@@ -728,6 +748,7 @@ properties:
               - beacon,imx8mn-beacon-kit  # i.MX8MN Beacon Development Kit
               - fsl,imx8mn-ddr4-evk       # i.MX8MN DDR4 EVK Board
               - fsl,imx8mn-evk            # i.MX8MN LPDDR4 EVK Board
+              - gw,imx8mn-gw7902          # i.MX8MM Gateworks Board
           - const: fsl,imx8mn
 
       - description: Variscite VAR-SOM-MX8MN based boards
@@ -752,10 +773,12 @@ properties:
         items:
           - enum:
               - boundary,imx8mq-nitrogen8m # i.MX8MQ NITROGEN Board
+              - boundary,imx8mq-nitrogen8m-som # i.MX8MQ NITROGEN SoM
               - einfochips,imx8mq-thor96  # i.MX8MQ Thor96 Board
               - fsl,imx8mq-evk            # i.MX8MQ EVK Board
               - google,imx8mq-phanbell    # Google Coral Edge TPU
               - kontron,pitx-imx8m        # Kontron pITX-imx8m Board
+              - mntre,reform2             # MNT Reform2 Laptop
               - purism,librem5-devkit     # Purism Librem5 devkit
               - solidrun,hummingboard-pulse # SolidRun Hummingboard Pulse
               - technexion,pico-pi-imx8m  # TechNexion PICO-PI-8M evk
@@ -973,6 +996,12 @@ properties:
               - fsl,s32v234-evb           # S32V234-EVB2 Customer Evaluation Board
           - const: fsl,s32v234
 
+      - description: Traverse LS1088A based Boards
+        items:
+          - enum:
+              - traverse,ten64            # Ten64 Networking Appliance / Board
+          - const: fsl,ls1088a
+
 additionalProperties: true
 
 ...
index 9720b00..880ddaf 100644 (file)
@@ -31,6 +31,7 @@ description: |
         ipq6018
         ipq8074
         mdm9615
+        msm8226
         msm8916
         msm8974
         msm8992
@@ -114,6 +115,11 @@ properties:
               - qcom,apq8084-sbc
           - const: qcom,apq8084
 
+      - items:
+          - enum:
+              - samsung,s3ve3g
+          - const: qcom,msm8226
+
       - items:
           - enum:
               - qcom,msm8960-cdp
@@ -129,6 +135,8 @@ properties:
           - const: qcom,msm8974
 
       - items:
+          - enum:
+              - alcatel,idol347
           - const: qcom,msm8916-mtp/1
           - const: qcom,msm8916-mtp
           - const: qcom,msm8916
@@ -181,6 +189,8 @@ properties:
       - items:
           - enum:
               - qcom,sc7280-idp
+              - qcom,sc7280-idp2
+              - google,piglin
               - google,senor
           - const: qcom,sc7280
 
index a0cce4e..8a11918 100644 (file)
@@ -238,17 +238,29 @@ properties:
           - 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,r8a77961
-              - renesas,r8a77965
+        oneOf:
+          - items:
+              - const: shimafuji,kingfisher
+              - enum:
+                  - renesas,h3ulcb
+                  - renesas,m3ulcb
+                  - renesas,m3nulcb
+              - enum:
+                  - renesas,r8a7795
+                  - renesas,r8a7796
+                  - renesas,r8a77961
+                  - renesas,r8a77965
+          - items:
+              - const: shimafuji,kingfisher
+              - enum:
+                  - renesas,h3ulcb
+                  - renesas,m3ulcb
+              - enum:
+                  - renesas,r8a779m1
+                  - renesas,r8a779m3
+              - enum:
+                  - renesas,r8a7795
+                  - renesas,r8a77961
 
       - description: R-Car M3-N (R8A77965)
         items:
@@ -296,6 +308,22 @@ properties:
           - const: renesas,falcon-cpu
           - const: renesas,r8a779a0
 
+      - description: R-Car H3e-2G (R8A779M1)
+        items:
+          - enum:
+              - renesas,h3ulcb      # H3ULCB (R-Car Starter Kit Premier)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m1
+          - const: renesas,r8a7795
+
+      - description: R-Car M3e-2G (R8A779M3)
+        items:
+          - enum:
+              - renesas,m3ulcb      # M3ULCB (R-Car Starter Kit Pro)
+              - renesas,salvator-xs # Salvator-XS (Salvator-X 2nd version)
+          - const: renesas,r8a779m3
+          - const: renesas,r8a77961
+
       - description: RZ/N1D (R9A06G032)
         items:
           - enum:
index b9f75e2..b962fa6 100644 (file)
@@ -111,6 +111,7 @@ properties:
       - items:
           - enum:
               - nvidia,p2771-0000
+              - nvidia,p3509-0000+p3636-0001
           - const: nvidia,tegra186
       - items:
           - enum:
diff --git a/Documentation/devicetree/bindings/gpio/aspeed,sgpio.yaml b/Documentation/devicetree/bindings/gpio/aspeed,sgpio.yaml
new file mode 100644 (file)
index 0000000..46bb121
--- /dev/null
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/aspeed,sgpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Aspeed SGPIO controller
+
+maintainers:
+  - Andrew Jeffery <andrew@aj.id.au>
+
+description:
+  This SGPIO controller is for ASPEED AST2400, AST2500 and AST2600 SoC,
+  AST2600 have two sgpio master one with 128 pins another one with 80 pins,
+  AST2500/AST2400 have one sgpio master with 80 pins. Each of the Serial
+  GPIO pins can be programmed to support the following options
+  - Support interrupt option for each input port and various interrupt
+    sensitivity option (level-high, level-low, edge-high, edge-low)
+  - Support reset tolerance option for each output port
+  - Directly connected to APB bus and its shift clock is from APB bus clock
+    divided by a programmable value.
+  - Co-work with external signal-chained TTL components (74LV165/74LV595)
+
+properties:
+  compatible:
+    enum:
+      - aspeed,ast2400-sgpio
+      - aspeed,ast2500-sgpio
+      - aspeed,ast2600-sgpiom
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  clocks:
+    maxItems: 1
+
+  ngpios: true
+
+  bus-frequency: true
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+  - interrupts
+  - interrupt-controller
+  - ngpios
+  - clocks
+  - bus-frequency
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/aspeed-clock.h>
+    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 = <80>;
+        bus-frequency = <12000000>;
+    };
diff --git a/Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt b/Documentation/devicetree/bindings/gpio/sgpio-aspeed.txt
deleted file mode 100644 (file)
index be329ea..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Aspeed SGPIO controller Device Tree Bindings
---------------------------------------------
-
-This SGPIO controller is for ASPEED AST2500 SoC, it supports up to 80 full
-featured Serial GPIOs. Each of the Serial GPIO pins can be programmed to
-support the following options:
-- Support interrupt option for each input port and various interrupt
-  sensitivity option (level-high, level-low, edge-high, edge-low)
-- Support reset tolerance option for each output port
-- Directly connected to APB bus and its shift clock is from APB bus clock
-  divided by a programmable value.
-- Co-work with external signal-chained TTL components (74LV165/74LV595)
-
-Required properties:
-
-- compatible : Should be one of
-  "aspeed,ast2400-sgpio", "aspeed,ast2500-sgpio"
-- #gpio-cells : Should be 2, see gpio.txt
-- reg : Address and length of the register set for the device
-- gpio-controller : Marks the device node as a GPIO controller
-- interrupts : Interrupt specifier, see interrupt-controller/interrupts.txt
-- interrupt-controller : Mark the GPIO controller as an interrupt-controller
-- ngpios : number of *hardware* GPIO lines, see gpio.txt. This will expose
-  2 software GPIOs per hardware GPIO: one for hardware input, one for hardware
-  output. Up to 80 pins, must be a multiple of 8.
-- clocks : A phandle to the APB clock for SGPM clock division
-- bus-frequency : SGPM CLK frequency
-
-The sgpio and interrupt properties are further described in their respective
-bindings documentation:
-
-- Documentation/devicetree/bindings/gpio/gpio.txt
-- Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
-
-  Example:
-       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>;
-       };
index 52d92ec..402fd12 100644 (file)
@@ -27,14 +27,25 @@ properties:
 
   interrupts:
     items:
-      - description: Transmit End Interrupt (TEI)
-      - description: Receive Data Full Interrupt (RI)
-      - description: Transmit Data Empty Interrupt (TI)
-      - description: Stop Condition Detection Interrupt (SPI)
-      - description: Start Condition Detection Interrupt (STI)
-      - description: NACK Reception Interrupt (NAKI)
-      - description: Arbitration-Lost Interrupt (ALI)
-      - description: Timeout Interrupt (TMOI)
+      - description: Transmit End Interrupt
+      - description: Receive Data Full Interrupt
+      - description: Transmit Data Empty Interrupt
+      - description: Stop Condition Detection Interrupt
+      - description: Start Condition Detection Interrupt
+      - description: NACK Reception Interrupt
+      - description: Arbitration-Lost Interrupt
+      - description: Timeout Interrupt
+
+  interrupt-names:
+    items:
+      - const: tei
+      - const: ri
+      - const: ti
+      - const: spi
+      - const: sti
+      - const: naki
+      - const: ali
+      - const: tmoi
 
   clock-frequency:
     description:
@@ -51,6 +62,7 @@ required:
   - compatible
   - reg
   - interrupts
+  - interrupt-names
   - clocks
   - clock-frequency
   - power-domains
@@ -85,6 +97,8 @@ examples:
                          <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "tei", "ri", "ti", "spi", "sti", "naki", "ali",
+                              "tmoi";
             clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
             clock-frequency = <100000>;
             power-domains = <&cpg_clocks>;
index 7771eca..2ef7ff6 100644 (file)
@@ -35,6 +35,10 @@ Optional properties for a client device:
   start_offset: the start offset of register address that GCE can access.
   size: the total size of register address that GCE can access.
 
+Optional properties for a client mutex node:
+- mediatek,gce-events: GCE events used by clients. The event numbers are
+  defined in 'dt-bindings/gce/<chip>-gce.h'.
+
 Some vaules of properties are defined in 'dt-bindings/gce/mt8173-gce.h',
 'dt-binding/gce/mt8183-gce.h' or 'dt-bindings/gce/mt6779-gce.h'. Such as
 sub-system ids, thread priority, event ids.
@@ -62,3 +66,14 @@ Example for a client device:
                                          <&gce SUBSYS_1401XXXX 0x2000 0x100>;
                ...
        };
+
+Example for a client mutex node:
+       mutex: mutex@14020000 {
+               compatible = "mediatek,mt8173-disp-mutex";
+               reg = <0 0x14020000 0 0x1000>;
+               interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_LOW>;
+               power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+               clocks = <&mmsys CLK_MM_MUTEX_32K>;
+               mediatek,gce-events = <CMDQ_EVENT_MUTEX0_STREAM_EOF>,
+                                     <CMDQ_EVENT_MUTEX1_STREAM_EOF>;
+       };
index 5d13cbb..3cc6f42 100644 (file)
@@ -16,12 +16,17 @@ description: |-
 
 properties:
   compatible:
-    items:
-      - enum:
-            # JPEG decoder
-          - nxp,imx8qxp-jpgdec
-            # JPEG encoder
-          - nxp,imx8qxp-jpgenc
+    oneOf:
+      - items:
+          enum:
+            - nxp,imx8qxp-jpgdec
+            - nxp,imx8qxp-jpgenc
+      - items:
+          - const: nxp,imx8qm-jpgdec
+          - const: nxp,imx8qxp-jpgdec
+      - items:
+          - const: nxp,imx8qm-jpgenc
+          - const: nxp,imx8qxp-jpgenc
 
   reg:
     maxItems: 1
@@ -69,7 +74,7 @@ examples:
     };
 
     jpegenc: jpegenc@58450000 {
-        compatible = "nxp,imx8qxp-jpgenc";
+        compatible = "nxp,imx8qm-jpgenc", "nxp,imx8qxp-jpgenc";
         reg = <0x58450000 0x00050000 >;
         interrupts = <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
                      <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
index 4a2eaf2..d3b9e9b 100644 (file)
@@ -48,6 +48,7 @@ properties:
               - qcom,sc7180-tsens
               - qcom,sc7280-tsens
               - qcom,sc8180x-tsens
+              - qcom,sdm630-tsens
               - qcom,sdm845-tsens
               - qcom,sm8150-tsens
               - qcom,sm8250-tsens
index 507aeef..749302f 100644 (file)
@@ -739,6 +739,8 @@ patternProperties:
     description: MiraMEMS Sensing Technology Co., Ltd.
   "^mitsubishi,.*":
     description: Mitsubishi Electric Corporation
+  "^mntre,.*":
+    description: MNT Research GmbH
   "^modtronix,.*":
     description: Modtronix Engineering
   "^mosaixtech,.*":
@@ -1072,6 +1074,8 @@ patternProperties:
     description: Silicon Integrated Systems Corp.
   "^sitronix,.*":
     description: Sitronix Technology Corporation
+  "^skov,.*":
+    description: SKOV A/S
   "^skyworks,.*":
     description: Skyworks Solutions, Inc.
   "^smartlabs,.*":
@@ -1190,6 +1194,8 @@ patternProperties:
     description: TPO
   "^tq,.*":
     description: TQ-Systems GmbH
+  "^traverse,.*":
+    description: Traverse Technologies Australia Pty Ltd
   "^tronfy,.*":
     description: Tronfy
   "^tronsmart,.*":
index 863347b..7e09341 100644 (file)
@@ -74,6 +74,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
        at91-sama5d4_xplained.dtb \
        at91-sama5d4ek.dtb \
        at91-vinco.dtb
+dtb-$(CONFIG_SOC_SAMA7G5) += \
+       at91-sama7g5ek.dtb
 dtb-$(CONFIG_ARCH_AXXIA) += \
        axm5516-amarillo.dtb
 dtb-$(CONFIG_ARCH_BCM2835) += \
@@ -241,8 +243,20 @@ dtb-$(CONFIG_ARCH_INTEGRATOR) += \
        integratorcp.dtb
 dtb-$(CONFIG_ARCH_IXP4XX) += \
        intel-ixp42x-linksys-nslu2.dtb \
+       intel-ixp42x-linksys-wrv54g.dtb \
+       intel-ixp42x-freecom-fsg-3.dtb \
        intel-ixp42x-welltech-epbx100.dtb \
-       intel-ixp43x-gateworks-gw2358.dtb
+       intel-ixp42x-ixdp425.dtb \
+       intel-ixp43x-kixrp435.dtb \
+       intel-ixp46x-ixdp465.dtb \
+       intel-ixp42x-adi-coyote.dtb \
+       intel-ixp42x-ixdpg425.dtb \
+       intel-ixp42x-iomega-nas100d.dtb \
+       intel-ixp42x-dlink-dsm-g600.dtb \
+       intel-ixp42x-gateworks-gw2348.dtb \
+       intel-ixp43x-gateworks-gw2358.dtb \
+       intel-ixp42x-netgear-wg302v2.dtb \
+       intel-ixp42x-arcom-vulcan.dtb
 dtb-$(CONFIG_ARCH_KEYSTONE) += \
        keystone-k2hk-evm.dtb \
        keystone-k2l-evm.dtb \
@@ -429,6 +443,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6dl-cubox-i-emmc-som-v15.dtb \
        imx6dl-cubox-i-som-v15.dtb \
        imx6dl-dfi-fs700-m60.dtb \
+       imx6dl-dhcom-picoitx.dtb \
        imx6dl-eckelmann-ci4x10.dtb \
        imx6dl-emcon-avari.dtb \
        imx6dl-gw51xx.dtb \
@@ -475,6 +490,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6dl-sabrelite.dtb \
        imx6dl-sabresd.dtb \
        imx6dl-savageboard.dtb \
+       imx6dl-skov-revc-lt2.dtb \
+       imx6dl-skov-revc-lt6.dtb \
+       imx6dl-solidsense.dtb \
        imx6dl-ts4900.dtb \
        imx6dl-ts7970.dtb \
        imx6dl-tx6dl-comtft.dtb \
@@ -575,6 +593,10 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6q-sabresd.dtb \
        imx6q-savageboard.dtb \
        imx6q-sbc6x.dtb \
+       imx6q-skov-revc-lt2.dtb \
+       imx6q-skov-revc-lt6.dtb \
+       imx6q-skov-reve-mi1010ait-1cp1.dtb \
+       imx6q-solidsense.dtb \
        imx6q-tbs2910.dtb \
        imx6q-ts4900.dtb \
        imx6q-ts7970.dtb \
@@ -607,7 +629,8 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6qp-tx6qp-8137-mb7.dtb \
        imx6qp-vicutp.dtb \
        imx6qp-wandboard-revd1.dtb \
-       imx6qp-zii-rdu2.dtb
+       imx6qp-zii-rdu2.dtb \
+       imx6s-dhcom-drc02.dtb
 dtb-$(CONFIG_SOC_IMX6SL) += \
        imx6sl-evk.dtb \
        imx6sl-tolino-shine2hd.dtb \
@@ -843,6 +866,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-pocketbeagle.dtb \
        am335x-regor-rdk.dtb \
        am335x-sancloud-bbe.dtb \
+       am335x-sancloud-bbe-lite.dtb \
        am335x-shc.dtb \
        am335x-sbc-t335.dtb \
        am335x-sl50.dtb \
@@ -933,6 +957,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-ipq4019-ap.dk07.1-c2.dtb \
        qcom-ipq8064-ap148.dtb \
        qcom-ipq8064-rb3011.dtb \
+       qcom-msm8226-samsung-s3ve3g.dtb \
        qcom-msm8660-surf.dtb \
        qcom-msm8960-cdp.dtb \
        qcom-msm8974-fairphone-fp2.dtb \
@@ -1076,7 +1101,8 @@ dtb-$(CONFIG_ARCH_STI) += \
        stih407-b2120.dtb \
        stih410-b2120.dtb \
        stih410-b2260.dtb \
-       stih418-b2199.dtb
+       stih418-b2199.dtb \
+       stih418-b2264.dtb
 dtb-$(CONFIG_ARCH_STM32) += \
        stm32f429-disco.dtb \
        stm32f469-disco.dtb \
@@ -1300,7 +1326,10 @@ dtb-$(CONFIG_ARCH_U8500) += \
        ste-href520-tvk.dtb \
        ste-ux500-samsung-golden.dtb \
        ste-ux500-samsung-janice.dtb \
-       ste-ux500-samsung-skomer.dtb
+       ste-ux500-samsung-gavini.dtb \
+       ste-ux500-samsung-codina.dtb \
+       ste-ux500-samsung-skomer.dtb \
+       ste-ux500-samsung-kyle.dtb
 dtb-$(CONFIG_ARCH_UNIPHIER) += \
        uniphier-ld4-ref.dtb \
        uniphier-ld6b-ref.dtb \
@@ -1433,7 +1462,10 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
        aspeed-bmc-arm-stardragon4800-rep2.dtb \
        aspeed-bmc-asrock-e3c246d4i.dtb \
        aspeed-bmc-bytedance-g220a.dtb \
+       aspeed-bmc-facebook-cloudripper.dtb \
        aspeed-bmc-facebook-cmm.dtb \
+       aspeed-bmc-facebook-elbert.dtb \
+       aspeed-bmc-facebook-fuji.dtb \
        aspeed-bmc-facebook-galaxy100.dtb \
        aspeed-bmc-facebook-minipack.dtb \
        aspeed-bmc-facebook-tiogapass.dtb \
@@ -1448,6 +1480,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
        aspeed-bmc-ibm-rainier-4u.dtb \
        aspeed-bmc-intel-s2600wf.dtb \
        aspeed-bmc-inspur-fp5280g2.dtb \
+       aspeed-bmc-inspur-nf5280m6.dtb \
        aspeed-bmc-lenovo-hr630.dtb \
        aspeed-bmc-lenovo-hr855xg2.dtb \
        aspeed-bmc-microsoft-olympus.dtb \
index 56915b6..daf4cb3 100644 (file)
        dr_mode = "host";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy0: ethernet-phy@0 {
                reg = <1>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        phy-handle = <&phy0>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
 
index d8d6039..2123bd5 100644 (file)
        dr_mode = "host";
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        fixed-link {
                speed = <100>;
                full-duplex;
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
 
index 8096d45..2f3872d 100644 (file)
        dr_mode = "host";
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        fixed-link {
                speed = <100>;
                full-duplex;
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
 
index 1103a2c..3667026 100644 (file)
        };
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
-       dual_emac = <1>;
 
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        status = "okay";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
index 2d51d4b..0ccdc7c 100644 (file)
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "mii";
+       ti,dual-emac-pvid = <1>;
 };
 
-&mac {
-       slaves = <1>;
+&cpsw_port2 {
+       status = "disabled";
+};
+
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
        clock-names = "ext-clk", "int-clk";
 };
+
+&pruss_tm {
+       status = "okay";
+};
index 64c3e92..10494c4 100644 (file)
@@ -3,9 +3,6 @@
  * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
  */
 
-#include <dt-bindings/display/tda998x.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-
 &ldo3_reg {
        regulator-min-microvolt = <1800000>;
        regulator-max-microvolt = <1800000>;
        non-removable;
 };
 
-&am33xx_pinmux {
-       nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
-               pinctrl-single,pins = <
-                       AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
-               >;
-       };
-
-       nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
-               pinctrl-single,pins = <
-                       AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
-               >;
-       };
-
-       mcasp0_pins: mcasp0_pins {
-               pinctrl-single,pins = <
-                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
-                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
-                       AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* gpmc_a11.GPIO1_27 */
-               >;
-       };
-};
-
-&lcdc {
-       status = "okay";
-
-       /* If you want to get 24 bit RGB and 16 BGR mode instead of
-        * current 16 bit RGB and 24 BGR modes, set the propety
-        * below to "crossed" and uncomment the video-ports -property
-        * in tda19988 node.
-        */
-       blue-and-red-wiring = "straight";
-
-       port {
-               lcdc_0: endpoint@0 {
-                       remote-endpoint = <&hdmi_0>;
-               };
-       };
-};
-
-&i2c0 {
-       tda19988: tda19988@70 {
-               compatible = "nxp,tda998x";
-               reg = <0x70>;
-               nxp,calib-gpios = <&gpio1 25 0>;
-               interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
-
-               pinctrl-names = "default", "off";
-               pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
-               pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
-
-               /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
-               /* video-ports = <0x234501>; */
-
-               #sound-dai-cells = <0>;
-               audio-ports = < TDA998x_I2S     0x03>;
-
-               ports {
-                       port@0 {
-                               hdmi_0: endpoint@0 {
-                                       remote-endpoint = <&lcdc_0>;
-                               };
-                       };
-               };
-       };
-};
-
 &rtc {
        system-power-controller;
 };
 
-&mcasp0        {
-       #sound-dai-cells = <0>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&mcasp0_pins>;
-       status = "okay";
-       op-mode = <0>;  /* MCASP_IIS_MODE */
-       tdm-slots = <2>;
-       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
-                       0 0 1 0
-               >;
-       tx-num-evt = <32>;
-       rx-num-evt = <32>;
-};
-
 / {
        memory@80000000 {
                device_type = "memory";
                reg = <0x80000000 0x20000000>; /* 512 MB */
        };
-
-       clk_mcasp0_fixed: clk_mcasp0_fixed {
-               #clock-cells = <0>;
-               compatible = "fixed-clock";
-               clock-frequency = <24576000>;
-       };
-
-       clk_mcasp0: clk_mcasp0 {
-               #clock-cells = <0>;
-               compatible = "gpio-gate-clock";
-               clocks = <&clk_mcasp0_fixed>;
-               enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
-       };
-
-       sound {
-               compatible = "simple-audio-card";
-               simple-audio-card,name = "TI BeagleBone Black";
-               simple-audio-card,format = "i2s";
-               simple-audio-card,bitclock-master = <&dailink0_master>;
-               simple-audio-card,frame-master = <&dailink0_master>;
-
-               dailink0_master: simple-audio-card,cpu {
-                       sound-dai = <&mcasp0>;
-                       clocks = <&clk_mcasp0>;
-               };
-
-               simple-audio-card,codec {
-                       sound-dai = <&tda19988>;
-               };
-       };
 };
diff --git a/arch/arm/boot/dts/am335x-boneblack-hdmi.dtsi b/arch/arm/boot/dts/am335x-boneblack-hdmi.dtsi
new file mode 100644 (file)
index 0000000..7cfddad
--- /dev/null
@@ -0,0 +1,141 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#include <dt-bindings/display/tda998x.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&am33xx_pinmux {
+       nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
+               >;
+       };
+
+       nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
+               >;
+       };
+
+       mcasp0_pins: mcasp0_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* gpmc_a11.GPIO1_27 */
+               >;
+       };
+};
+
+&lcdc {
+       status = "okay";
+
+       /* If you want to get 24 bit RGB and 16 BGR mode instead of
+        * current 16 bit RGB and 24 BGR modes, set the propety
+        * below to "crossed" and uncomment the video-ports -property
+        * in tda19988 node.
+        */
+       blue-and-red-wiring = "straight";
+
+       port {
+               lcdc_0: endpoint@0 {
+                       remote-endpoint = <&hdmi_0>;
+               };
+       };
+};
+
+&i2c0 {
+       tda19988: tda19988@70 {
+               compatible = "nxp,tda998x";
+               reg = <0x70>;
+               nxp,calib-gpios = <&gpio1 25 0>;
+               interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default", "off";
+               pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
+               pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
+
+               /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
+               /* video-ports = <0x234501>; */
+
+               #sound-dai-cells = <0>;
+               audio-ports = < TDA998x_I2S     0x03>;
+
+               ports {
+                       port@0 {
+                               hdmi_0: endpoint@0 {
+                                       remote-endpoint = <&lcdc_0>;
+                               };
+                       };
+               };
+       };
+};
+
+&mcasp0        {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcasp0_pins>;
+       status = "okay";
+       op-mode = <0>;  /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+                       0 0 1 0
+               >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+};
+
+/ {
+       clk_mcasp0_fixed: clk_mcasp0_fixed {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <24576000>;
+       };
+
+       clk_mcasp0: clk_mcasp0 {
+               #clock-cells = <0>;
+               compatible = "gpio-gate-clock";
+               clocks = <&clk_mcasp0_fixed>;
+               enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "TI BeagleBone Black";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink0_master>;
+               simple-audio-card,frame-master = <&dailink0_master>;
+
+               dailink0_master: simple-audio-card,cpu {
+                       sound-dai = <&mcasp0>;
+                       clocks = <&clk_mcasp0>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&tda19988>;
+               };
+       };
+};
index 8011664..c72b09a 100644 (file)
@@ -7,6 +7,7 @@
 #include "am33xx.dtsi"
 #include "am335x-bone-common.dtsi"
 #include "am335x-boneblack-common.dtsi"
+#include "am335x-boneblack-hdmi.dtsi"
 #include <dt-bindings/interrupt-controller/irq.h>
 
 / {
@@ -62,7 +63,7 @@
        };
 };
 
-&mac {
+&mac_sw {
        status = "disabled";
 };
 
index e2ee8b8..9312197 100644 (file)
@@ -7,6 +7,7 @@
 #include "am33xx.dtsi"
 #include "am335x-bone-common.dtsi"
 #include "am335x-boneblack-common.dtsi"
+#include "am335x-boneblack-hdmi.dtsi"
 
 / {
        model = "TI AM335x BeagleBone Black";
index 0afcc2e..c6bb325 100644 (file)
        status = "okay";
 };
 
+&gpio0 {
+       gpio-line-names =
+               "UART3_CTS", /* M17 */
+               "UART3_RTS", /* M18 */
+               "UART2_RX", /* A17 */
+               "UART2_TX", /* B17 */
+               "I2C1_SDA", /* B16 */
+               "I2C1_SCL", /* A16 */
+               "MMC0_CD", /* C15 */
+               "SPI1_SS2", /* C18 */
+               "EQEP_1A", /* V2 */
+               "EQEP_1B", /* V3 */
+               "MDIR_2B", /* V4 */
+               "BATT_LED_2", /* T5 */
+               "I2C2_SDA", /* D18 */
+               "I2C2_SCL", /* D17 */
+               "UART1_RX", /* D16 */
+               "UART1_TX", /* D15 */
+               "MMC2_DAT1", /* J18 */
+               "MMC2_DAT2", /* K15 */
+               "NC", /* F16 */
+               "WIFI_LED", /* A15 */
+               "MOT_STBY", /* D14 */
+               "WLAN_IRQ", /* K16 */
+               "PWM_2A", /* U10 */
+               "PWM_2B", /* T10 */
+               "",
+               "",
+               "BATT_LED_4", /* T11 */
+               "BATT_LED_1", /* U12 */
+               "BT_EN", /* K17 */
+               "SPI1_SS1", /* H18 */
+               "UART4_RX", /* T17 */
+               "MDIR_1B"; /* U17 */
+};
+
+&gpio1 {
+       gpio-line-names =
+               "MMC1_DAT0", /* U7 */
+               "MMC1_DAT1", /* V7 */
+               "MMC1_DAT2", /* R8 */
+               "MMC1_DAT3", /* T8 */
+               "MMC1_DAT4", /* U8 */
+               "MMC1_DAT5", /* V8 */
+               "MMC1_DAT6", /* R9 */
+               "MMC1_DAT7", /* T9 */
+               "DCAN1_TX", /* E18 */
+               "DCAN1_RX", /* E17 */
+               "UART0_RX", /* E15 */
+               "UART0_TX", /* E16 */
+               "EQEP_2A", /* T12 */
+               "EQEP_2B", /* R12 */
+               "PRU_E_A", /* V13 */
+               "PRU_E_B", /* U13 */
+               "MDIR_2A", /* R13 */
+               "GPIO1_17", /* V14 */
+               "PWM_1A", /* U14 */
+               "PWM_1B", /* T14 */
+               "EMMC_RST", /* R14 */
+               "USR_LED_0", /* V15 */
+               "USR_LED_1", /* U15 */
+               "USR_LED_2", /* T15 */
+               "USR_LED_3", /* V16 */
+               "GPIO1_25", /* U16 */
+               "MCASP0_AXR0", /* T16 */
+               "MCASP0_AXR1", /* V17 */
+               "MCASP0_ACLKR", /* U18 */
+               "BATT_LED_3", /* V6 */
+               "MMC1_CLK", /* U9 */
+               "MMC1_CMD"; /* V9 */
+};
+
+&gpio2 {
+       gpio-line-names =
+               "MDIR_1A", /* T13 */
+               "MCASP0_FSR", /* V12 */
+               "LED_RED", /* R7 */
+               "LED_GREEN", /* T7 */
+               "MODE_BTN", /* U6 */
+               "PAUSE_BTN", /* T6 */
+               "MDIR_4A", /* R1 */
+               "MDIR_4B", /* R2 */
+               "MDIR_3B", /* R3 */
+               "MDIR_3A", /* R4 */
+               "SVO7", /* T1 */
+               "SVO8", /* T2 */
+               "SVO5", /* T3 */
+               "SVO6", /* T4 */
+               "UART5_TX", /* U1 */
+               "UART5_RX", /* U2 */
+               "SERVO_EN", /* U3 */
+               "NC", /* U4 */
+               "UART3_RX", /* L17 */
+               "UART3_TX", /* L16 */
+               "MMC2_CLK", /* L15 */
+               "DCAN1_SILENT", /* M16 */
+               "SVO1", /* U5 */
+               "SVO3", /* R5 */
+               "SVO2", /* V5 */
+               "SVO4", /* R6 */
+               "MMC0_DAT3", /* F17 */
+               "MMC0_DAT2", /* F18 */
+               "MMC0_DAT1", /* G15 */
+               "MMC0_DAT0", /* G16 */
+               "MMC0_CLK", /* G17 */
+               "MMC0_CMD"; /* G18 */
+};
+
 &gpio3 {
+       gpio-line-names =
+               "MMC2_DAT3", /* H16 */
+               "GPIO3_1", /* H17 */
+               "GPIO3_2", /* J15 */
+               "MMC2_CMD", /* J16 */
+               "MMC2_DAT0", /* J17 */
+               "I2C0_SDA", /* C17 */
+               "I2C0_SCL", /* C16 */
+               "EMU1", /* C14 */
+               "EMU0", /* B14 */
+               "WL_EN", /* K18 */
+               "WL_BT_OE", /* L18 */
+               "",
+               "",
+               "NC", /* F15 */
+               "SPI1_SCK", /* A13 */
+               "SPI1_MISO", /* B13 */
+               "SPI1_MOSI", /* D12 */
+               "GPIO3_17", /* C12 */
+               "EQEP_0A", /* B12 */
+               "EQEP_0B", /* C13 */
+               "GPIO3_20", /* D13 */
+               "IMU_INT", /* A14 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "";
+
        ls-buf-en-hog {
                gpio-hog;
                gpios = <10 GPIO_ACTIVE_HIGH>;
                output-high;
-               line-name = "LS_BUF_EN";
        };
 };
 
index 74db0fc..215f279 100644 (file)
@@ -62,7 +62,7 @@
        };
 };
 
-&mac {
+&mac_sw {
        status = "disabled";
 };
 
index 5660b5f..a223cdd 100644 (file)
 };
 
 /* Ethernet */
-&mac {
-       slaves = <1>;
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
+       ti,dual-emac-pvid = <1>;
+};
+
+&cpsw_port2 {
+       status = "disabled";
 };
 
 /* USB */
index 688e14e..d9f003d 100644 (file)
@@ -413,28 +413,31 @@ status = "okay";
        status = "okay";
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
-       slaves = <1>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii-txid";
+       ti,dual-emac-pvid = <1>;
+};
+
+&cpsw_port2 {
+       status = "disabled";
 };
 
 &mmc1 {
index 9cf39c9..659e99e 100644 (file)
        clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
        clock-names = "ext-clk", "int-clk";
 };
+
+&pruss_tm {
+       status = "okay";
+};
index 001657b..a2db655 100644 (file)
        clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
        clock-names = "ext-clk", "int-clk";
 };
+
+&pruss_tm {
+       status = "okay";
+};
index 5e598ac..e5ce89c 100644 (file)
                reg = <3>;
        };
 };
+
+&pruss_tm {
+       status = "okay";
+};
index 7ec23d4..cc14415 100644 (file)
        };
 };
 
-&mac {
+&mac_sw {
        status = "okay";
 };
 
-&davinci_mdio {
-       status = "okay";
+&davinci_mdio_sw {
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
-
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rmii";
+       ti,dual-emac-pvid = <2>;
 };
 
 &elm {
index 0f07846..1282dae 100644 (file)
        dr_mode = "host";
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <3>;
+       ti,dual-emac-pvid = <3>;
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
-       dual_emac = <1>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@5 {
                reg = <5>;
index 8121a19..11e8f64 100644 (file)
        regulator-max-microvolt = <5000000>;
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_default>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&davinci_mdio_default>;
        status = "okay";
 };
 
-&cpsw_emac0 {
-       status = "okay";
+&cpsw_port1 {
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
-       status = "okay";
+&cpsw_port2 {
+       ti,dual-emac-pvid = <2>;
 };
 
 &sham {
index 5923b6e..1cc513e 100644 (file)
        };
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy0: ethernet-phy@4 {
                reg = <4>;
        };
 };
 
-&cpsw_emac0 {
-       status = "okay";
+&cpsw_port1 {
        phy-handle = <&phy0>;
        phy-mode = "rmii";
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        status = "disabled";
 };
index 39e5d2c..a7269b9 100644 (file)
        regulator-max-microvolt = <5000000>;
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_default>;
-       dual_emac = <1>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&davinci_mdio_default>;
-       status = "okay";
 
        ethphy0: ethernet-phy@4 {
                reg = <4>;
        };
 };
 
-&cpsw_emac0 {
-       status = "okay";
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
-       status = "okay";
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
 &sham {
index 270a3d5..245c35f 100644 (file)
        };
 };
 
-&cpsw_emac0 {
+&mac_sw {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&eth_slave1_pins_default>;
+       pinctrl-1 = <&eth_slave1_pins_sleep>;
+       status = "okay";
+};
+
+&cpsw_port1 {
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
+       ti,dual-emac-pvid = <1>;
+};
+
+&cpsw_port2 {
+       status = "disabled";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mdio_pins_default>;
        pinctrl-1 = <&mdio_pins_sleep>;
-       status = "okay";
 
        phy0: ethernet-phy@4 {
                reg = <4>;
        };
 };
 
-&mac {
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&eth_slave1_pins_default>;
-       pinctrl-1 = <&eth_slave1_pins_sleep>;
-       slaves = <1>;
-       status = "okay";
-};
-
 &rtc {
        system-power-controller;
 };
index c996639..1479fd9 100644 (file)
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
+       status = "okay";
        phy-handle = <&phy1>;
        phy-mode = "rgmii-id";
+       ti,dual-emac-pvid = <2>;
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy1: ethernet-phy@6 {
                reg = <6>;
                eee-broken-1000t;
        };
 };
 
+&mac_sw {
+       pinctrl-0 = <&eth_slave1_pins_default>, <&eth_slave2_pins_default>;
+       pinctrl-1 = <&eth_slave1_pins_sleep>, <&eth_slave2_pins_sleep>;
+       slaves = <2>;
+};
+
 &dcan0 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&dcan0_pins_default>;
        };
 };
 
-&mac {
-       pinctrl-0 = <&eth_slave1_pins_default>, <&eth_slave2_pins_default>;
-       pinctrl-1 = <&eth_slave1_pins_sleep>, <&eth_slave2_pins_sleep>;
-       slaves = <2>;
-};
-
 &mcasp0 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mcasp0_pins_default>;
index 0dbc72d..b6f2567 100644 (file)
        };
 };
 
-&mac {
-       dual_emac;
+&mac_sw {
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        status = "okay";
 
        ethphy0: ethernet-phy@0 {
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
 &mmc1 {
index 8303b83..57e756b 100644 (file)
        dr_mode = "host";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy0: ethernet-phy@0 {
                reg = <1>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        phy-handle = <&phy0>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
 
index f8e0e95..c6cc1c6 100644 (file)
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy0: ethernet-phy@0 {
                reg = <1>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        phy-handle = <&phy0>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
index a4e1375..96dffd3 100644 (file)
        };
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy0: ethernet-phy@0 {
                reg = <1>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
        phy-handle = <&phy0>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        phy-handle = <&phy1>;
 };
index 5403e47..605b2a4 100644 (file)
        clock-frequency = <100000>;
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii-txid";
+       ti,dual-emac-pvid = <1>;
 };
 
-&mac {
-       slaves = <1>;
+&cpsw_port2 {
+       status = "disabled";
+};
+
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
 
        ethphy0: ethernet-phy@4 {
                reg = <4>;
index 6c547c8..124026f 100644 (file)
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&phy1>;
        phy-mode = "rgmii-id";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy1: ethernet-phy@2 {
                reg = <2>;
        };
 };
 
-&mac {
-       slaves = <2>;
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&ethernet0_pins &ethernet1_pins>;
-       dual_emac;
 };
 
 /* Misc */
index d41a5ff..b793bee 100644 (file)
        };
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw_default>;
-       dual_emac;                      /* no switch, two distinct MACs */
        status = "okay";
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&davinci_mdio_default>;
-       status = "okay";
 
        ethphy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
 &tscadc {
index f9a027b..b5e88e6 100644 (file)
 };
 
 /* Ethernet */
-&cpsw_emac0 {
-       status = "okay";
+&cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii";
+       ti,dual-emac-pvid = <1>;
 };
 
-&cpsw_emac1 {
-       status = "okay";
+&cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rgmii";
+       ti,dual-emac-pvid = <2>;
 };
 
-&davinci_mdio {
-       status = "okay";
+&davinci_mdio_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&mdio_pins>;
 
        };
 };
 
-&mac {
+&mac_sw {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&ethernet_pins>;
 };
 
-
 &am33xx_pinmux {
        ethernet_pins: pinmux_ethernet {
                pinctrl-single,pins = <
index 7e46b4c..f65cd13 100644 (file)
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-handle = <&phy0>;
        phy-mode = "rmii";
-       dual_emac_res_vlan = <1>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&davinci_mdio {
+&cpsw_port2 {
+       status = "disabled";
+};
+
+&davinci_mdio_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&mdio_pins>;
-       status = "okay";
 
        phy0: ethernet-phy@0 {
                reg = <0>;
        };
 };
 
-&mac {
-       slaves = <1>;
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&ethernet0_pins>;
        status = "okay";
index 6fbf4ac..7b3966e 100644 (file)
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
+       status = "okay";
        phy-handle = <&phy1>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy1: ethernet-phy@1 {
                reg = <1>;
        };
 };
 
-&mac {
-       slaves = <2>;
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&ethernet0_pins &ethernet1_pins>;
-       dual_emac = <1>;
 };
 
 /* GPIOs */
diff --git a/arch/arm/boot/dts/am335x-sancloud-bbe-common.dtsi b/arch/arm/boot/dts/am335x-sancloud-bbe-common.dtsi
new file mode 100644 (file)
index 0000000..f9b7e77
--- /dev/null
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+&am33xx_pinmux {
+       cpsw_default: cpsw_default {
+               pinctrl-single,pins = <
+                       /* Slave 1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE2)   /* mii1_txen.rgmii1_tctl */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE2)    /* mii1_rxdv.rgmii1_rctl */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd3.rgmii1_td3 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd2.rgmii1_td2 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd1.rgmii1_td1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd0.rgmii1_td0 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_OUTPUT_PULLDOWN, MUX_MODE2)  /* mii1_txclk.rgmii1_tclk */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE2)   /* mii1_rxclk.rgmii1_rclk */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd3.rgmii1_rd3 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd2.rgmii1_rd2 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd1.rgmii1_rd1 */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd0.rgmii1_rd0 */
+               >;
+       };
+
+       cpsw_sleep: cpsw_sleep {
+               pinctrl-single,pins = <
+                       /* Slave 1 reset value */
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
+                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
+               >;
+       };
+
+       usb_hub_ctrl: usb_hub_ctrl {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_OUTPUT_PULLUP, MUX_MODE7)     /* rmii1_refclk.gpio0_29 */
+               >;
+       };
+};
+
+&mac_sw {
+       pinctrl-0 = <&cpsw_default>;
+       pinctrl-1 = <&cpsw_sleep>;
+};
+
+&cpsw_port1 {
+       phy-mode = "rgmii-id";
+};
+
+&i2c0 {
+       usb2512b: usb-hub@2c {
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_hub_ctrl>;
+               compatible = "microchip,usb2512b";
+               reg = <0x2c>;
+               reset-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+       };
+};
diff --git a/arch/arm/boot/dts/am335x-sancloud-bbe-lite.dts b/arch/arm/boot/dts/am335x-sancloud-bbe-lite.dts
new file mode 100644 (file)
index 0000000..d6ef193
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ * Copyright (C) 2021 SanCloud Ltd
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+#include "am335x-boneblack-common.dtsi"
+#include "am335x-sancloud-bbe-common.dtsi"
+
+/ {
+       model = "SanCloud BeagleBone Enhanced Lite";
+       compatible = "sancloud,am335x-boneenhanced",
+                    "ti,am335x-bone-black",
+                    "ti,am335x-bone",
+                    "ti,am33xx";
+};
+
+&am33xx_pinmux {
+       bb_spi0_pins: pinmux_bb_spi0_pins {
+               pinctrl-single,pins = <
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_SCLK, PIN_INPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D0, PIN_INPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_D1, PIN_INPUT, MUX_MODE0)
+                       AM33XX_PADCONF(AM335X_PIN_SPI0_CS0, PIN_INPUT, MUX_MODE0)
+               >;
+       };
+};
+
+&spi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&bb_spi0_pins>;
+
+       channel@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               compatible = "micron,spi-authenta";
+
+               reg = <0>;
+               spi-max-frequency = <16000000>;
+               spi-cpha;
+       };
+};
index 275ba33..efbe931 100644 (file)
@@ -7,6 +7,8 @@
 #include "am33xx.dtsi"
 #include "am335x-bone-common.dtsi"
 #include "am335x-boneblack-common.dtsi"
+#include "am335x-boneblack-hdmi.dtsi"
+#include "am335x-sancloud-bbe-common.dtsi"
 #include <dt-bindings/interrupt-controller/irq.h>
 
 / {
 };
 
 &am33xx_pinmux {
-       pinctrl-names = "default";
-
-       cpsw_default: cpsw_default {
-               pinctrl-single,pins = <
-                       /* Slave 1 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE2)   /* mii1_txen.rgmii1_tctl */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE2)    /* mii1_rxdv.rgmii1_rctl */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd3.rgmii1_td3 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd2.rgmii1_td2 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd1.rgmii1_td1 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE2)    /* mii1_txd0.rgmii1_td0 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_OUTPUT_PULLDOWN, MUX_MODE2)  /* mii1_txclk.rgmii1_tclk */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE2)   /* mii1_rxclk.rgmii1_rclk */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd3.rgmii1_rd3 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd2.rgmii1_rd2 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd1.rgmii1_rd1 */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE2)     /* mii1_rxd0.rgmii1_rd0 */
-               >;
-       };
-
-       cpsw_sleep: cpsw_sleep {
-               pinctrl-single,pins = <
-                       /* Slave 1 reset value */
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_DV, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_TX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RX_CLK, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD3, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD2, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLDOWN, MUX_MODE7)
-               >;
-       };
-
-       davinci_mdio_default: davinci_mdio_default {
-               pinctrl-single,pins = <
-                       /* MDIO */
-                       AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLUP | SLEWCTRL_FAST, MUX_MODE0)
-                       AM33XX_PADCONF(AM335X_PIN_MDC, PIN_OUTPUT_PULLUP, MUX_MODE0)
-               >;
-       };
-
-       davinci_mdio_sleep: davinci_mdio_sleep {
-               pinctrl-single,pins = <
-                       /* MDIO reset value */
-                       AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLDOWN, MUX_MODE7)
-                       AM33XX_PADCONF(AM335X_PIN_MDC, PIN_INPUT_PULLDOWN, MUX_MODE7)
-               >;
-       };
-
-       usb_hub_ctrl: usb_hub_ctrl {
-               pinctrl-single,pins = <
-                       AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_OUTPUT_PULLUP, MUX_MODE7)     /* rmii1_refclk.gpio0_29 */
-               >;
-       };
-
        mpu6050_pins: pinmux_mpu6050_pins {
                pinctrl-single,pins = <
                        AM33XX_PADCONF(AM335X_PIN_UART0_CTSN, PIN_INPUT, MUX_MODE7)    /* uart0_ctsn.gpio1_8 */
        };
 };
 
-&mac {
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&cpsw_default>;
-       pinctrl-1 = <&cpsw_sleep>;
-       status = "okay";
-};
-
-&davinci_mdio {
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&davinci_mdio_default>;
-       pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
-
-       ethphy0: ethernet-phy@0 {
-               reg = <0>;
-       };
-};
-
-&cpsw_emac0 {
-       phy-handle = <&ethphy0>;
-       phy-mode = "rgmii-id";
-};
-
 &i2c0 {
        lps331ap: barometer@5c {
+               pinctrl-names = "default";
+               pinctrl-0 = <&lps3331ap_pins>;
                compatible = "st,lps331ap-press";
                st,drdy-int-pin = <1>;
                reg = <0x5c>;
        };
 
        mpu6050: accelerometer@68 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&mpu6050_pins>;
                compatible = "invensense,mpu6050";
                reg = <0x68>;
                interrupt-parent = <&gpio0>;
                interrupts = <2 IRQ_TYPE_EDGE_RISING>;
                orientation = <0xff 0 0 0 1 0 0 0 0xff>;
        };
-
-       usb2512b: usb-hub@2c {
-               compatible = "microchip,usb2512b";
-               reg = <0x2c>;
-               reset-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
-               /* wifi on port 4 */
-       };
 };
index 2bfe60d..6b98775 100644 (file)
        status = "okay";
 };
 
-&davinci_mdio {
-       pinctrl-names = "default", "sleep";
-       pinctrl-0 = <&davinci_mdio_default>;
-       pinctrl-1 = <&davinci_mdio_sleep>;
-       status = "okay";
-
-       ethernetphy0: ethernet-phy@0 {
-               reg = <0>;
-               smsc,disable-energy-detect;
-       };
-};
-
 &epwmss1 {
        status = "okay";
 
        };
 };
 
-&mac {
+&mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
        status = "okay";
-       slaves = <1>;
-       cpsw_emac0: slave@200 {
-               phy-mode = "mii";
-               phy-handle = <&ethernetphy0>;
+};
+
+&cpsw_port1 {
+       phy-mode = "mii";
+       phy-handle = <&ethernetphy0>;
+       ti,dual-emac-pvid = <1>;
+};
+
+&cpsw_port2 {
+       status = "disabled";
+};
+
+&davinci_mdio_sw {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&davinci_mdio_default>;
+       pinctrl-1 = <&davinci_mdio_sleep>;
+
+       ethernetphy0: ethernet-phy@0 {
+               reg = <0>;
+               smsc,disable-energy-detect;
        };
 };
 
index f4684c8..6516907 100644 (file)
        };
 };
 
-&cpsw_emac0 {
+&cpsw_port1 {
        phy-mode = "mii";
        phy-handle = <&ethphy0>;
+       ti,dual-emac-pvid = <1>;
 };
 
-&mac {
+&cpsw_port2 {
+       status = "disabled";
+};
+
+&mac_sw {
        status = "okay";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
 };
 
-&davinci_mdio {
-       status = "okay";
+&davinci_mdio_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
index 1359bf8..673159d 100644 (file)
        };
 };
 
-&cpsw_emac1 {
+&cpsw_port2 {
+       status = "okay";
        phy-handle = <&phy1>;
        phy-mode = "mii";
-       dual_emac_res_vlan = <2>;
+       ti,dual-emac-pvid = <2>;
 };
 
-&davinci_mdio {
+&davinci_mdio_sw {
        phy1: ethernet-phy@1 {
                reg = <1>;
        };
 };
 
-&mac {
-       slaves = <2>;
+&mac_sw {
        pinctrl-names = "default";
        pinctrl-0 = <&ethernet0_pins &ethernet1_pins>;
-       dual_emac = <1>;
 };
 
 /* MMC */
index 859e760..c9629cb 100644 (file)
                        #size-cells = <1>;
                        ranges = <0x0 0x300000 0x80000>;
                        status = "disabled";
+
+                       pruss: pruss@0 {
+                               compatible = "ti,am3356-pruss";
+                               reg = <0x0 0x80000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+
+                               pruss_mem: memories@0 {
+                                       reg = <0x0 0x2000>,
+                                             <0x2000 0x2000>,
+                                             <0x10000 0x3000>;
+                                       reg-names = "dram0", "dram1",
+                                                   "shrdram2";
+                               };
+
+                               pruss_cfg: cfg@26000 {
+                                       compatible = "ti,pruss-cfg", "syscon";
+                                       reg = <0x26000 0x2000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x26000 0x2000>;
+
+                                       clocks {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               pruss_iepclk_mux: iepclk-mux@30 {
+                                                       reg = <0x30>;
+                                                       #clock-cells = <0>;
+                                                       clocks = <&l3_gclk>,        /* icss_iep_gclk */
+                                                                <&pruss_ocp_gclk>; /* icss_ocp_gclk */
+                                               };
+                                       };
+                               };
+
+                               pruss_mii_rt: mii-rt@32000 {
+                                       compatible = "ti,pruss-mii", "syscon";
+                                       reg = <0x32000 0x58>;
+                               };
+
+                               pruss_intc: interrupt-controller@20000 {
+                                       compatible = "ti,pruss-intc";
+                                       reg = <0x20000 0x2000>;
+                                       interrupts = <20 21 22 23 24 25 26 27>;
+                                       interrupt-names = "host_intr0", "host_intr1",
+                                                         "host_intr2", "host_intr3",
+                                                         "host_intr4", "host_intr5",
+                                                         "host_intr6", "host_intr7";
+                                       interrupt-controller;
+                                       #interrupt-cells = <3>;
+                               };
+
+                               pru0: pru@34000 {
+                                       compatible = "ti,am3356-pru";
+                                       reg = <0x34000 0x2000>,
+                                             <0x22000 0x400>,
+                                             <0x22400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am335x-pru0-fw";
+                               };
+
+                               pru1: pru@38000 {
+                                       compatible = "ti,am3356-pru";
+                                       reg = <0x38000 0x2000>,
+                                             <0x24000 0x400>,
+                                             <0x24400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am335x-pru1-fw";
+                               };
+
+                               pruss_mdio: mdio@32400 {
+                                       compatible = "ti,davinci_mdio";
+                                       reg = <0x32400 0x90>;
+                                       clocks = <&dpll_core_m4_ck>;
+                                       clock-names = "fck";
+                                       bus_freq = <1000000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       status = "disabled";
+                               };
+                       };
                };
        };
 };
index 5e33d0e..f6ec85d 100644 (file)
@@ -36,8 +36,8 @@
                usb1 = &usb1;
                phy0 = &usb0_phy;
                phy1 = &usb1_phy;
-               ethernet0 = &cpsw_emac0;
-               ethernet1 = &cpsw_emac1;
+               ethernet0 = &cpsw_port1;
+               ethernet1 = &cpsw_port2;
                spi0 = &spi0;
                spi1 = &spi1;
                mmc0 = &mmc1;
index 57a85a6..61a1d88 100644 (file)
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0x54400000 0x80000>;
+
+                       pruss1: pruss@0 {
+                               compatible = "ti,am4376-pruss1";
+                               reg = <0x0 0x40000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+
+                               pruss1_mem: memories@0 {
+                                       reg = <0x0 0x2000>,
+                                             <0x2000 0x2000>,
+                                             <0x10000 0x8000>;
+                                       reg-names = "dram0", "dram1",
+                                                   "shrdram2";
+                               };
+
+                               pruss1_cfg: cfg@26000 {
+                                       compatible = "ti,pruss-cfg", "syscon";
+                                       reg = <0x26000 0x2000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x26000 0x2000>;
+
+                                       clocks {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               pruss1_iepclk_mux: iepclk-mux@30 {
+                                                       reg = <0x30>;
+                                                       #clock-cells = <0>;
+                                                       clocks = <&sysclk_div>,     /* icss_iep_gclk */
+                                                                <&pruss_ocp_gclk>; /* icss_ocp_gclk */
+                                               };
+                                       };
+                               };
+
+                               pruss1_mii_rt: mii-rt@32000 {
+                                       compatible = "ti,pruss-mii", "syscon";
+                                       reg = <0x32000 0x58>;
+                               };
+
+                               pruss1_intc: interrupt-controller@20000 {
+                                       compatible = "ti,pruss-intc";
+                                       reg = <0x20000 0x2000>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <3>;
+                                       interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "host_intr0", "host_intr1",
+                                                         "host_intr2", "host_intr3",
+                                                         "host_intr4",
+                                                         "host_intr6", "host_intr7";
+                                       ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
+                               };
+
+                               pru1_0: pru@34000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x34000 0x3000>,
+                                             <0x22000 0x400>,
+                                             <0x22400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru1_0-fw";
+                               };
+
+                               pru1_1: pru@38000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x38000 0x3000>,
+                                             <0x24000 0x400>,
+                                             <0x24400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru1_1-fw";
+                               };
+
+                               pruss1_mdio: mdio@32400 {
+                                       compatible = "ti,davinci_mdio";
+                                       reg = <0x32400 0x90>;
+                                       clocks = <&dpll_core_m4_ck>;
+                                       clock-names = "fck";
+                                       bus_freq = <1000000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+                       };
+
+                       pruss0: pruss@40000 {
+                               compatible = "ti,am4376-pruss0";
+                               reg = <0x40000 0x40000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+
+                               pruss0_mem: memories@40000 {
+                                       reg = <0x40000 0x1000>,
+                                             <0x42000 0x1000>;
+                                       reg-names = "dram0", "dram1";
+                               };
+
+                               pruss0_cfg: cfg@66000 {
+                                       compatible = "ti,pruss-cfg", "syscon";
+                                       reg = <0x66000 0x2000>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x66000 0x2000>;
+
+                                       clocks {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               pruss0_iepclk_mux: iepclk-mux@30 {
+                                                       reg = <0x30>;
+                                                       #clock-cells = <0>;
+                                                       clocks = <&sysclk_div>,     /* icss_iep_gclk */
+                                                                <&pruss_ocp_gclk>; /* icss_ocp_gclk */
+                                               };
+                                       };
+                               };
+
+                               pruss0_mii_rt: mii-rt@72000 {
+                                       compatible = "ti,pruss-mii", "syscon";
+                                       reg = <0x72000 0x58>;
+                                       status = "disabled";
+                               };
+
+                               pruss0_intc: interrupt-controller@60000 {
+                                       compatible = "ti,pruss-intc";
+                                       reg = <0x60000 0x2000>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <3>;
+                                       interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+                                       interrupt-names = "host_intr0", "host_intr1",
+                                                         "host_intr2", "host_intr3",
+                                                         "host_intr4",
+                                                         "host_intr6", "host_intr7";
+                                       ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
+                               };
+
+                               pru0_0: pru@74000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x74000 0x1000>,
+                                             <0x62000 0x400>,
+                                             <0x62400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru0_0-fw";
+                               };
+
+                               pru0_1: pru@78000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x78000 0x1000>,
+                                             <0x64000 0x400>,
+                                             <0x64400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru0_1-fw";
+                               };
+                       };
                };
 
                target-module@50000000 {
index a83f46e..5ce8e68 100644 (file)
                           <600000 1100000>,
                           <300000 950000>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
index e267768..c2e4896 100644 (file)
 &cpu {
        cpu0-supply = <&dcdc2>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
index 2dc5255..53f64e3 100644 (file)
                opp-suspend;
        };
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
index 496ed34..20a34d2 100644 (file)
                };
        };
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
index 2aa75ab..2f4d2e4 100644 (file)
 &cpu {
        cpu0-supply = <&dcdc2>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
index 032c1ac..46c5383 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
  *
  * Common PRUSS data for TI AM57xx platforms
  */
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0x00000000 0x4b200000 0x80000>;
+
+               pruss1: pruss@0 {
+                       compatible = "ti,am5728-pruss";
+                       reg = <0x0 0x80000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       pruss1_mem: memories@0 {
+                               reg = <0x0 0x2000>,
+                                     <0x2000 0x2000>,
+                                     <0x10000 0x8000>;
+                               reg-names = "dram0", "dram1",
+                                           "shrdram2";
+                       };
+
+                       pruss1_cfg: cfg@26000 {
+                               compatible = "ti,pruss-cfg", "syscon";
+                               reg = <0x26000 0x2000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0x0 0x26000 0x2000>;
+
+                               clocks {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       pruss1_iepclk_mux: iepclk-mux@30 {
+                                               reg = <0x30>;
+                                               #clock-cells = <0>;
+                                               clocks = <&dpll_gmac_m3x2_ck>,  /* icss_iep_clk */
+                                                        <&dpll_gmac_h13x2_ck>; /* icss_clk */
+                                       };
+                               };
+                       };
+
+                       pruss1_mii_rt: mii-rt@32000 {
+                               compatible = "ti,pruss-mii", "syscon";
+                               reg = <0x32000 0x58>;
+                       };
+
+                       pruss1_intc: interrupt-controller@20000 {
+                               compatible = "ti,pruss-intc";
+                               reg = <0x20000 0x2000>;
+                               interrupt-controller;
+                               #interrupt-cells = <3>;
+                               interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "host_intr0", "host_intr1",
+                                                 "host_intr2", "host_intr3",
+                                                 "host_intr4", "host_intr5",
+                                                 "host_intr6", "host_intr7";
+                       };
+
+                       pru1_0: pru@34000 {
+                               compatible = "ti,am5728-pru";
+                               reg = <0x34000 0x3000>,
+                                     <0x22000 0x400>,
+                                     <0x22400 0x100>;
+                               reg-names = "iram", "control", "debug";
+                               firmware-name = "am57xx-pru1_0-fw";
+                       };
+
+                       pru1_1: pru@38000 {
+                               compatible = "ti,am5728-pru";
+                               reg = <0x38000 0x3000>,
+                                     <0x24000 0x400>,
+                                     <0x24400 0x100>;
+                               reg-names = "iram", "control", "debug";
+                               firmware-name = "am57xx-pru1_1-fw";
+                       };
+
+                       pruss1_mdio: mdio@32400 {
+                               compatible = "ti,davinci_mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&dpll_gmac_h13x2_ck>;
+                               clock-names = "fck";
+                               bus_freq = <1000000>;
+                               reg = <0x32400 0x90>;
+                       };
+               };
        };
 
        pruss2_tm: target-module@4b2a6000 {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0x00000000 0x4b280000 0x80000>;
+
+               pruss2: pruss@0 {
+                       compatible = "ti,am5728-pruss";
+                       reg = <0x0 0x80000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       pruss2_mem: memories@0 {
+                               reg = <0x0 0x2000>,
+                                     <0x2000 0x2000>,
+                                     <0x10000 0x8000>;
+                               reg-names = "dram0", "dram1",
+                                           "shrdram2";
+                       };
+
+                       pruss2_cfg: cfg@26000 {
+                               compatible = "ti,pruss-cfg", "syscon";
+                               reg = <0x26000 0x2000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0x0 0x26000 0x2000>;
+
+                               clocks {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       pruss2_iepclk_mux: iepclk-mux@30 {
+                                               reg = <0x30>;
+                                               #clock-cells = <0>;
+                                               clocks = <&dpll_gmac_m3x2_ck>,  /* icss_iep_clk */
+                                                        <&dpll_gmac_h13x2_ck>; /* icss_clk */
+                                       };
+                               };
+                       };
+
+                       pruss2_mii_rt: mii-rt@32000 {
+                               compatible = "ti,pruss-mii", "syscon";
+                               reg = <0x32000 0x58>;
+                       };
+
+                       pruss2_intc: interrupt-controller@20000 {
+                               compatible = "ti,pruss-intc";
+                               reg = <0x20000 0x2000>;
+                               interrupt-controller;
+                               #interrupt-cells = <3>;
+                               interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
+                                            <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>;
+                               interrupt-names = "host_intr0", "host_intr1",
+                                                 "host_intr2", "host_intr3",
+                                                 "host_intr4", "host_intr5",
+                                                 "host_intr6", "host_intr7";
+                       };
+
+                       pru2_0: pru@34000 {
+                               compatible = "ti,am5728-pru";
+                               reg = <0x34000 0x3000>,
+                                     <0x22000 0x400>,
+                                     <0x22400 0x100>;
+                               reg-names = "iram", "control", "debug";
+                               firmware-name = "am57xx-pru2_0-fw";
+                       };
+
+                       pru2_1: pru@38000 {
+                               compatible = "ti,am5728-pru";
+                               reg = <0x38000 0x3000>,
+                                     <0x24000 0x400>,
+                                     <0x24400 0x100>;
+                               reg-names = "iram", "control", "debug";
+                               firmware-name = "am57xx-pru2_1-fw";
+                       };
+
+                       pruss2_mdio: mdio@32400 {
+                               compatible = "ti,davinci_mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&dpll_gmac_h13x2_ck>;
+                               clock-names = "fck";
+                               bus_freq = <1000000>;
+                               reg = <0x32400 0x90>;
+                       };
+               };
        };
 };
index e81078c..4842502 100644 (file)
        pinctrl-1 = <&mmc2_pins_hs>;
        pinctrl-2 = <&mmc2_pins_ddr_rev20 &mmc2_iodelay_ddr_conf>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
+
+&pruss2_mdio {
+       status = "disabled";
+};
index 6504265..94a738c 100644 (file)
        pinctrl-1 = <&mmc2_pins_hs>;
        pinctrl-2 = <&mmc2_pins_ddr_rev20>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
+
+&pruss2_mdio {
+       status = "disabled";
+};
index 2cb5774..c260aa1 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com/
  */
 
-#include "dra76x.dtsi"
+#include "dra74x-p.dtsi"
 #include "am57-pruss.dtsi"
 
 / {
        status = "disabled";
 };
 
-&usb4_tm {
-       status = "disabled";
-};
-
 &atl_tm {
        status = "disabled";
 };
index 1b8f3a2..6dff366 100644 (file)
        pinctrl-2 = <&mmc2_pins_default>;
 };
 
-&m_can0 {
+&emif1 {
+       status = "okay";
+};
+
+&pruss1_mdio {
        status = "disabled";
 };
 
-&emif1 {
-       status = "okay";
+&pruss2_mdio {
+       status = "disabled";
 };
index 6b82ecf..994e69a 100644 (file)
        status = "okay";
        memory-region = <&dsp2_memory_region>;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
+
+&pruss2_mdio {
+       status = "disabled";
+};
index aed8156..2e94f32 100644 (file)
        status = "okay";
        ti,no-reset-on-init;
 };
+
+&pruss1_mdio {
+       status = "disabled";
+};
+
+&pruss2_mdio {
+       status = "disabled";
+};
index 583a241..1d24b39 100644 (file)
      status = "okay";
      memory-region = <&gfx_memory>;
 };
+
+&rtc {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-cloudripper.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-cloudripper.dts
new file mode 100644 (file)
index 0000000..9c6271a
--- /dev/null
@@ -0,0 +1,544 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "ast2600-facebook-netbmc-common.dtsi"
+
+/ {
+       model = "Facebook Cloudripper BMC";
+       compatible = "facebook,cloudripper-bmc", "aspeed,ast2600";
+
+       aliases {
+               /*
+                * PCA9548 (1-0070) provides 8 channels connecting to
+                * SMB (Switch Main Board).
+                */
+               i2c16 = &imux16;
+               i2c17 = &imux17;
+               i2c18 = &imux18;
+               i2c19 = &imux19;
+               i2c20 = &imux20;
+               i2c21 = &imux21;
+               i2c22 = &imux22;
+               i2c23 = &imux23;
+
+               /*
+                * PCA9548 (2-0070) provides 8 channels connecting to
+                * SCM (System Controller Module).
+                */
+               i2c24 = &imux24;
+               i2c25 = &imux25;
+               i2c26 = &imux26;
+               i2c27 = &imux27;
+               i2c28 = &imux28;
+               i2c29 = &imux29;
+               i2c30 = &imux30;
+               i2c31 = &imux31;
+
+               /*
+                * PCA9548 (3-0070) provides 8 channels connecting to
+                * SMB (Switch Main Board).
+                */
+               i2c32 = &imux32;
+               i2c33 = &imux33;
+               i2c34 = &imux34;
+               i2c35 = &imux35;
+               i2c36 = &imux36;
+               i2c37 = &imux37;
+               i2c38 = &imux38;
+               i2c39 = &imux39;
+
+               /*
+                * PCA9548 (8-0070) provides 8 channels connecting to
+                * PDB (Power Delivery Board).
+                */
+               i2c40 = &imux40;
+               i2c41 = &imux41;
+               i2c42 = &imux42;
+               i2c43 = &imux43;
+               i2c44 = &imux44;
+               i2c45 = &imux45;
+               i2c46 = &imux46;
+               i2c47 = &imux47;
+
+               /*
+                * PCA9548 (15-0076) provides 8 channels connecting to
+                * FCM (Fan Controller Module).
+                */
+               i2c48 = &imux48;
+               i2c49 = &imux49;
+               i2c50 = &imux50;
+               i2c51 = &imux51;
+               i2c52 = &imux52;
+               i2c53 = &imux53;
+               i2c54 = &imux54;
+               i2c55 = &imux55;
+       };
+
+       spi_gpio: spi-gpio {
+               num-chipselects = <2>;
+               cs-gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>,
+                          <&gpio0 ASPEED_GPIO(X, 1) GPIO_ACTIVE_HIGH>;
+
+               eeprom@1 {
+                       compatible = "atmel,at93c46d";
+                       spi-max-frequency = <250000>;
+                       data-size = <16>;
+                       spi-cs-high;
+                       reg = <1>;
+               };
+       };
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+/*
+ * "mdio1" is connected to the MDC/MDIO interface of the on-board
+ * management switch (whose ports are connected to BMC, Host and front
+ * panel ethernet port).
+ */
+&mdio1 {
+       status = "okay";
+};
+
+&mdio3 {
+       status = "okay";
+
+       ethphy1: ethernet-phy@13 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0d>;
+       };
+};
+
+&mac3 {
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii4_default>;
+};
+
+&i2c0 {
+       multi-master;
+       bus-frequency = <1000000>;
+};
+
+&i2c1 {
+       /*
+        * PCA9548 (1-0070) provides 8 channels connecting to SMB (Switch
+        * Main Board).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux16: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux17: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux18: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux19: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux20: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux21: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux22: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux23: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c2 {
+       /*
+        * PCA9548 (2-0070) provides 8 channels connecting to SCM (System
+        * Controller Module).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux24: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux25: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux26: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux27: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux28: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux29: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux30: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux31: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c3 {
+       /*
+        * PCA9548 (3-0070) provides 8 channels connecting to SMB (Switch
+        * Main Board).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux32: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux33: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux34: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux35: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux36: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux37: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux38: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux39: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c6 {
+       lp5012@14 {
+               compatible = "ti,lp5012";
+               reg = <0x14>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               multi-led@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+                       color = <LED_COLOR_ID_MULTI>;
+                       function = LED_FUNCTION_ACTIVITY;
+                       label = "sys";
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_RED>;
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_BLUE>;
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_GREEN>;
+                       };
+               };
+
+               multi-led@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+                       color = <LED_COLOR_ID_MULTI>;
+                       function = LED_FUNCTION_ACTIVITY;
+                       label = "fan";
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_RED>;
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_BLUE>;
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_GREEN>;
+                       };
+               };
+
+               multi-led@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+                       color = <LED_COLOR_ID_MULTI>;
+                       function = LED_FUNCTION_ACTIVITY;
+                       label = "psu";
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_RED>;
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_BLUE>;
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_GREEN>;
+                       };
+               };
+
+               multi-led@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+                       color = <LED_COLOR_ID_MULTI>;
+                       function = LED_FUNCTION_ACTIVITY;
+                       label = "scm";
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_RED>;
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_BLUE>;
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_GREEN>;
+                       };
+               };
+       };
+};
+
+&i2c8 {
+       /*
+        * PCA9548 (8-0070) provides 8 channels connecting to PDB (Power
+        * Delivery Board).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux40: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux41: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux42: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux43: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux44: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux45: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux46: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux47: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+
+       };
+};
+
+&i2c15 {
+       /*
+        * PCA9548 (15-0076) provides 8 channels connecting to FCM (Fan
+        * Controller Module).
+        */
+       i2c-switch@76 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x76>;
+               i2c-mux-idle-disconnect;
+
+               imux48: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux49: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux50: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux51: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux52: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux53: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux54: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux55: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-elbert.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-elbert.dts
new file mode 100644 (file)
index 0000000..27b43fe
--- /dev/null
@@ -0,0 +1,185 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+/dts-v1/;
+
+#include "ast2600-facebook-netbmc-common.dtsi"
+
+/ {
+       model = "Facebook Elbert BMC";
+       compatible = "facebook,elbert-bmc", "aspeed,ast2600";
+
+       aliases {
+               serial0 = &uart5;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+
+               /*
+                * 8 child channels of PCA9548 2-0075.
+                */
+               i2c16 = &imux16;
+               i2c17 = &imux17;
+               i2c18 = &imux18;
+               i2c19 = &imux19;
+               i2c20 = &imux20;
+               i2c21 = &imux21;
+               i2c22 = &imux22;
+               i2c23 = &imux23;
+
+               /*
+                * 8 child channels of PCA9548 5-0075.
+                */
+               i2c24 = &imux24;
+               i2c25 = &imux25;
+               i2c26 = &imux26;
+               i2c27 = &imux27;
+               i2c28 = &imux28;
+               i2c29 = &imux29;
+               i2c30 = &imux30;
+               i2c31 = &imux31;
+       };
+
+       chosen {
+               stdout-path = &uart5;
+       };
+
+       spi_gpio: spi-gpio {
+               num-chipselects = <1>;
+               cs-gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>;
+       };
+};
+
+&lpc_ctrl {
+       status = "okay";
+};
+
+&kcs2 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca8>;
+};
+
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+};
+
+&i2c2 {
+       i2c-switch@75 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2c-mux-idle-disconnect;
+
+               imux16: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux17: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux18: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux19: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux20: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux21: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux22: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux23: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c5 {
+       i2c-switch@75 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x75>;
+               i2c-mux-idle-disconnect;
+
+               imux24: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               imux25: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux26: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux27: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux28: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux29: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux30: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux31: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c11 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-fuji.dts
new file mode 100644 (file)
index 0000000..af58a73
--- /dev/null
@@ -0,0 +1,1251 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "ast2600-facebook-netbmc-common.dtsi"
+
+/ {
+       model = "Facebook Fuji BMC";
+       compatible = "facebook,fuji-bmc", "aspeed,ast2600";
+
+       aliases {
+               /*
+                * PCA9548 (2-0070) provides 8 channels connecting to
+                * SCM (System Controller Module).
+                */
+               i2c16 = &imux16;
+               i2c17 = &imux17;
+               i2c18 = &imux18;
+               i2c19 = &imux19;
+               i2c20 = &imux20;
+               i2c21 = &imux21;
+               i2c22 = &imux22;
+               i2c23 = &imux23;
+
+               /*
+                * PCA9548 (8-0070) provides 8 channels connecting to
+                * SMB (Switch Main Board).
+                */
+               i2c24 = &imux24;
+               i2c25 = &imux25;
+               i2c26 = &imux26;
+               i2c27 = &imux27;
+               i2c28 = &imux28;
+               i2c29 = &imux29;
+               i2c30 = &imux30;
+               i2c31 = &imux31;
+
+               /*
+                * PCA9548 (11-0077) provides 8 channels connecting to
+                * SMB (Switch Main Board).
+                */
+               i2c40 = &imux40;
+               i2c41 = &imux41;
+               i2c42 = &imux42;
+               i2c43 = &imux43;
+               i2c44 = &imux44;
+               i2c45 = &imux45;
+               i2c46 = &imux46;
+               i2c47 = &imux47;
+
+               /*
+                * PCA9548 (24-0071) provides 8 channels connecting to
+                * PDB-Left.
+                */
+               i2c48 = &imux48;
+               i2c49 = &imux49;
+               i2c50 = &imux50;
+               i2c51 = &imux51;
+               i2c52 = &imux52;
+               i2c53 = &imux53;
+               i2c54 = &imux54;
+               i2c55 = &imux55;
+
+               /*
+                * PCA9548 (25-0072) provides 8 channels connecting to
+                * PDB-Right.
+                */
+               i2c56 = &imux56;
+               i2c57 = &imux57;
+               i2c58 = &imux58;
+               i2c59 = &imux59;
+               i2c60 = &imux60;
+               i2c61 = &imux61;
+               i2c62 = &imux62;
+               i2c63 = &imux63;
+
+               /*
+                * PCA9548 (26-0076) provides 8 channels connecting to
+                * FCM1.
+                */
+               i2c64 = &imux64;
+               i2c65 = &imux65;
+               i2c66 = &imux66;
+               i2c67 = &imux67;
+               i2c68 = &imux68;
+               i2c69 = &imux69;
+               i2c70 = &imux70;
+               i2c71 = &imux71;
+
+               /*
+                * PCA9548 (27-0076) provides 8 channels connecting to
+                * FCM2.
+                */
+               i2c72 = &imux72;
+               i2c73 = &imux73;
+               i2c74 = &imux74;
+               i2c75 = &imux75;
+               i2c76 = &imux76;
+               i2c77 = &imux77;
+               i2c78 = &imux78;
+               i2c79 = &imux79;
+
+               /*
+                * PCA9548 (40-0076) provides 8 channels connecting to
+                * PIM1.
+                */
+               i2c80 = &imux80;
+               i2c81 = &imux81;
+               i2c82 = &imux82;
+               i2c83 = &imux83;
+               i2c84 = &imux84;
+               i2c85 = &imux85;
+               i2c86 = &imux86;
+               i2c87 = &imux87;
+
+               /*
+                * PCA9548 (41-0076) provides 8 channels connecting to
+                * PIM2.
+                */
+               i2c88 = &imux88;
+               i2c89 = &imux89;
+               i2c90 = &imux90;
+               i2c91 = &imux91;
+               i2c92 = &imux92;
+               i2c93 = &imux93;
+               i2c94 = &imux94;
+               i2c95 = &imux95;
+
+               /*
+                * PCA9548 (42-0076) provides 8 channels connecting to
+                * PIM3.
+                */
+               i2c96 = &imux96;
+               i2c97 = &imux97;
+               i2c98 = &imux98;
+               i2c99 = &imux99;
+               i2c100 = &imux100;
+               i2c101 = &imux101;
+               i2c102 = &imux102;
+               i2c103 = &imux103;
+
+               /*
+                * PCA9548 (43-0076) provides 8 channels connecting to
+                * PIM4.
+                */
+               i2c104 = &imux104;
+               i2c105 = &imux105;
+               i2c106 = &imux106;
+               i2c107 = &imux107;
+               i2c108 = &imux108;
+               i2c109 = &imux109;
+               i2c110 = &imux110;
+               i2c111 = &imux111;
+
+               /*
+                * PCA9548 (44-0076) provides 8 channels connecting to
+                * PIM5.
+                */
+               i2c112 = &imux112;
+               i2c113 = &imux113;
+               i2c114 = &imux114;
+               i2c115 = &imux115;
+               i2c116 = &imux116;
+               i2c117 = &imux117;
+               i2c118 = &imux118;
+               i2c119 = &imux119;
+
+               /*
+                * PCA9548 (45-0076) provides 8 channels connecting to
+                * PIM6.
+                */
+               i2c120 = &imux120;
+               i2c121 = &imux121;
+               i2c122 = &imux122;
+               i2c123 = &imux123;
+               i2c124 = &imux124;
+               i2c125 = &imux125;
+               i2c126 = &imux126;
+               i2c127 = &imux127;
+
+               /*
+                * PCA9548 (46-0076) provides 8 channels connecting to
+                * PIM7.
+                */
+               i2c128 = &imux128;
+               i2c129 = &imux129;
+               i2c130 = &imux130;
+               i2c131 = &imux131;
+               i2c132 = &imux132;
+               i2c133 = &imux133;
+               i2c134 = &imux134;
+               i2c135 = &imux135;
+
+               /*
+                * PCA9548 (47-0076) provides 8 channels connecting to
+                * PIM8.
+                */
+               i2c136 = &imux136;
+               i2c137 = &imux137;
+               i2c138 = &imux138;
+               i2c139 = &imux139;
+               i2c140 = &imux140;
+               i2c141 = &imux141;
+               i2c142 = &imux142;
+               i2c143 = &imux143;
+       };
+
+       spi_gpio: spi-gpio {
+               num-chipselects = <3>;
+               cs-gpios = <&gpio0 ASPEED_GPIO(X, 0) GPIO_ACTIVE_LOW>,
+                          <0>, /* device reg=<1> does not exist */
+                          <&gpio0 ASPEED_GPIO(X, 2) GPIO_ACTIVE_HIGH>;
+
+               eeprom@2 {
+                       compatible = "atmel,at93c46d";
+                       spi-max-frequency = <250000>;
+                       data-size = <16>;
+                       spi-cs-high;
+                       reg = <2>;
+               };
+       };
+};
+
+&i2c0 {
+       multi-master;
+       bus-frequency = <1000000>;
+};
+
+&i2c2 {
+       /*
+        * PCA9548 (2-0070) provides 8 channels connecting to SCM (System
+        * Controller Module).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux16: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       adm1278@10 {
+                               compatible = "adi,adm1278";
+                               reg = <0x10>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               shunt-resistor-micro-ohms = <1500>;
+                       };
+               };
+
+               imux17: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+
+               imux18: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+               };
+
+               imux19: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+               };
+
+               imux20: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux21: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux22: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux23: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+       };
+};
+
+&i2c8 {
+       /*
+        * PCA9548 (8-0070) provides 8 channels connecting to SMB (Switch
+        * Main Board).
+        */
+       i2c-switch@70 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               i2c-mux-idle-disconnect;
+
+               imux24: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       i2c-switch@71 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x71>;
+                               i2c-mux-idle-disconnect;
+
+                               imux48: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux49: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux50: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+
+                                       lp5012@14 {
+                                               compatible = "ti,lp5012";
+                                               reg = <0x14>;
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+
+                                               multi-led@0 {
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       reg = <0>;
+                                                       color = <LED_COLOR_ID_MULTI>;
+                                                       function = LED_FUNCTION_ACTIVITY;
+                                                       label = "sys";
+
+                                                       led@0 {
+                                                               reg = <0>;
+                                                               color = <LED_COLOR_ID_RED>;
+                                                       };
+
+                                                       led@1 {
+                                                               reg = <1>;
+                                                               color = <LED_COLOR_ID_BLUE>;
+                                                       };
+
+                                                       led@2 {
+                                                               reg = <2>;
+                                                               color = <LED_COLOR_ID_GREEN>;
+                                                       };
+                                               };
+
+                                               multi-led@1 {
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       reg = <1>;
+                                                       color = <LED_COLOR_ID_MULTI>;
+                                                       function = LED_FUNCTION_ACTIVITY;
+                                                       label = "fan";
+
+                                                       led@0 {
+                                                               reg = <0>;
+                                                               color = <LED_COLOR_ID_RED>;
+                                                       };
+
+                                                       led@1 {
+                                                               reg = <1>;
+                                                               color = <LED_COLOR_ID_BLUE>;
+                                                       };
+
+                                                       led@2 {
+                                                               reg = <2>;
+                                                               color = <LED_COLOR_ID_GREEN>;
+                                                       };
+                                               };
+
+                                               multi-led@2 {
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       reg = <2>;
+                                                       color = <LED_COLOR_ID_MULTI>;
+                                                       function = LED_FUNCTION_ACTIVITY;
+                                                       label = "psu";
+
+                                                       led@0 {
+                                                               reg = <0>;
+                                                               color = <LED_COLOR_ID_RED>;
+                                                       };
+
+                                                       led@1 {
+                                                               reg = <1>;
+                                                               color = <LED_COLOR_ID_BLUE>;
+                                                       };
+
+                                                       led@2 {
+                                                               reg = <2>;
+                                                               color = <LED_COLOR_ID_GREEN>;
+                                                       };
+                                               };
+
+                                               multi-led@3 {
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       reg = <3>;
+                                                       color = <LED_COLOR_ID_MULTI>;
+                                                       function = LED_FUNCTION_ACTIVITY;
+                                                       label = "smb";
+
+                                                       led@0 {
+                                                               reg = <0>;
+                                                               color = <LED_COLOR_ID_RED>;
+                                                       };
+
+                                                       led@1 {
+                                                               reg = <1>;
+                                                               color = <LED_COLOR_ID_BLUE>;
+                                                       };
+
+                                                       led@2 {
+                                                               reg = <2>;
+                                                               color = <LED_COLOR_ID_GREEN>;
+                                                       };
+                                               };
+                                       };
+                               };
+
+                               imux51: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux52: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux53: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux54: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux55: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux25: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       i2c-switch@72 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x72>;
+                               i2c-mux-idle-disconnect;
+
+                               imux56: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux57: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux58: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux59: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux60: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux61: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux62: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux63: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux26: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux64: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux65: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux66: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux67: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+
+                                       adm1278@10 {
+                                               compatible = "adi,adm1278";
+                                               reg = <0x10>;
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               shunt-resistor-micro-ohms = <250>;
+                                       };
+                               };
+
+                               imux68: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux69: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux70: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux71: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux27: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux72: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux73: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux74: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux75: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+
+                                       adm1278@10 {
+                                               compatible = "adi,adm1278";
+                                               reg = <0x10>;
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               shunt-resistor-micro-ohms = <250>;
+                                       };
+                               };
+
+                               imux76: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux77: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux78: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux79: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux28: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+               };
+
+               imux29: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+               };
+
+               imux30: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+               };
+
+               imux31: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+               };
+
+       };
+};
+
+&i2c11 {
+       status = "okay";
+
+       /*
+        * PCA9548 (11-0077) provides 8 channels connecting to SMB (Switch
+        * Main Board).
+        */
+       i2c-switch@77 {
+               compatible = "nxp,pca9548";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x77>;
+               i2c-mux-idle-disconnect;
+
+               imux40: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux80: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux81: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux82: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux83: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux84: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux85: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux86: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux87: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux41: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux88: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux89: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux90: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux91: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux92: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux93: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux94: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux95: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux42: i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux96: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux97: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux98: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux99: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux100: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux101: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux102: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux103: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux43: i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux104: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux105: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux106: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux107: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux108: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux109: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux110: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux111: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux44: i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux112: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux113: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux114: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux115: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux116: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux117: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux118: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux119: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux45: i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux120: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux121: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux122: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux123: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux124: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux125: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux126: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux127: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux46: i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux128: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux129: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux130: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux131: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux132: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux133: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux134: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux135: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+               imux47: i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+
+                       i2c-switch@76 {
+                               compatible = "nxp,pca9548";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x76>;
+                               i2c-mux-idle-disconnect;
+
+                               imux136: i2c@0 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <0>;
+                               };
+
+                               imux137: i2c@1 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <1>;
+                               };
+
+                               imux138: i2c@2 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <2>;
+                               };
+
+                               imux139: i2c@3 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <3>;
+                               };
+
+                               imux140: i2c@4 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <4>;
+                               };
+
+                               imux141: i2c@5 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <5>;
+                               };
+
+                               imux142: i2c@6 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <6>;
+                               };
+
+                               imux143: i2c@7 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       reg = <7>;
+                               };
+                       };
+
+               };
+
+       };
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&mdio1 {
+       status = "okay";
+
+       ethphy3: ethernet-phy@13 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0d>;
+       };
+};
+
+&mac3 {
+       status = "okay";
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii4_default>;
+};
index dcf2134..60e875a 100644 (file)
@@ -51,7 +51,3 @@
 &vhub {
        status = "okay";
 };
-
-&adc {
-       status = "okay";
-};
index 9eb23e8..230d16c 100644 (file)
                };
 
                /*
-                * FIT image: 59.5 MB.
+                * FIT image: 55.5 MB.
                 */
                fit@80000 {
-                       reg = <0x80000 0x3b80000>;
+                       reg = <0x80000 0x3780000>;
                        label = "fit";
                };
 
                /*
-                * "data0" partition (4MB) is reserved for persistent
+                * "data0" partition (8MB) is reserved for persistent
                 * data store.
                 */
                data0@3800000 {
-                       reg = <0x3c00000 0x400000>;
+                       reg = <0x3800000 0x800000>;
                        label = "data0";
                };
 
index 39c6be9..584efa5 100644 (file)
                stdout-path = &uart3;
                bootargs = "console=ttyS2,9600n8 root=/dev/ram rw";
        };
+
+       ast-adc-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>;
+       };
 };
 
 &wdt2 {
index 2dcfeae..6624855 100644 (file)
        status = "disabled";
 };
 
-&adc {
-       status = "okay";
-};
-
 &pwm_tacho {
        status = "okay";
        pinctrl-names = "default";
index 63a3dd5..a901c8b 100644 (file)
  * Both firmware flashes are 128MB on Wedge400 BMC.
  */
 &fmc_flash0 {
-       partitions {
-               compatible = "fixed-partitions";
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               /*
-                * u-boot partition: 384KB.
-                */
-               u-boot@0 {
-                       reg = <0x0 0x60000>;
-                       label = "u-boot";
-               };
-
-               /*
-                * u-boot environment variables: 128KB.
-                */
-               u-boot-env@60000 {
-                       reg = <0x60000 0x20000>;
-                       label = "env";
-               };
-
-               /*
-                * FIT image: 123.5 MB.
-                */
-               fit@80000 {
-                       reg = <0x80000 0x7b80000>;
-                       label = "fit";
-               };
-
-               /*
-                * "data0" partition (4MB) is reserved for persistent
-                * data store.
-                */
-               data0@7c00000 {
-                       reg = <0x7c00000 0x400000>;
-                       label = "data0";
-               };
-
-               /*
-                * "flash0" partition (covering the entire flash) is
-                * explicitly created to avoid breaking legacy applications.
-                */
-               flash0@0 {
-                       reg = <0x0 0x8000000>;
-                       label = "flash0";
-               };
-       };
+#include "facebook-bmc-flash-layout-128.dtsi"
 };
 
 &fmc_flash1 {
index aa24cac..2efd706 100644 (file)
        /*O0-O7*/       "","","","","","","","",
        /*P0-P7*/       "","","","","led-pcieslot-power","","","",
        /*Q0-Q7*/       "","","","","","","","",
-       /*R0-R7*/       "","","","","","I2C_FLASH_MICRO_N","","",
+       /*R0-R7*/       "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","I2C_FLASH_MICRO_N","","",
        /*S0-S7*/       "","","","","","","","",
        /*T0-T7*/       "","","","","","","","",
        /*U0-U7*/       "","","","","","","","",
                        type = <PCA955X_TYPE_GPIO>;
                };
 
-               gpio@01 {
+               gpio@1 {
                        reg = <1>;
                        type = <PCA955X_TYPE_GPIO>;
                };
 
 &emmc {
        status = "okay";
-       clk-phase-mmc-hs200 = <180>, <180>;
+       clk-phase-mmc-hs200 = <210>, <228>;
 };
 
 &fsim0 {
index 481d0ee..6419c97 100644 (file)
        /*O0-O7*/       "","","","usb-power","","","","",
        /*P0-P7*/       "","","","","pcieslot-power","","","",
        /*Q0-Q7*/       "cfam-reset","","","","","","","",
-       /*R0-R7*/       "","","","","","","","",
+       /*R0-R7*/       "bmc-tpm-reset","power-chassis-control","power-chassis-good","","","","","",
        /*S0-S7*/       "presence-ps0","presence-ps1","presence-ps2","presence-ps3",
                                "","","","",
        /*T0-T7*/       "","","","","","","","",
diff --git a/arch/arm/boot/dts/aspeed-bmc-inspur-nf5280m6.dts b/arch/arm/boot/dts/aspeed-bmc-inspur-nf5280m6.dts
new file mode 100644 (file)
index 0000000..b3c1e3b
--- /dev/null
@@ -0,0 +1,691 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2021 Inspur Corporation
+/dts-v1/;
+
+#include "aspeed-g5.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+#include <dt-bindings/i2c/i2c.h>
+#include <dt-bindings/leds/leds-pca955x.h>
+
+/ {
+       model = "NF5280M6 BMC";
+       compatible = "inspur,nf5280m6-bmc", "aspeed,ast2500";
+
+       chosen {
+               stdout-path = &uart5;
+               bootargs = "console=ttyS4,115200 earlycon";
+       };
+
+       memory@80000000 {
+               reg = <0x80000000 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               vga_memory: framebuffer@9f000000 {
+                       no-map;
+                       reg = <0x9f000000 0x01000000>; /* 16M */
+               };
+
+               video_engine_memory: jpegbuffer {
+                       size = <0x02000000>;    /* 32M */
+                       alignment = <0x01000000>;
+                       compatible = "shared-dma-pool";
+                       reusable;
+               };
+       };
+
+       leds {
+           compatible = "gpio-leds";
+
+               bmc_alive {
+                       label = "bmc_alive";
+                       gpios = <&gpio ASPEED_GPIO(B, 0) GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "timer";
+                       led-pattern = <1000 1000>;
+               };
+
+               front-fan {
+                       label = "front-fan";
+                       gpios = <&gpio ASPEED_GPIO(F,2) GPIO_ACTIVE_LOW>;
+               };
+
+           front-psu {
+                       label = "front-psu";
+                       gpios = <&gpio ASPEED_GPIO(F,3) GPIO_ACTIVE_LOW>;
+               };
+
+           front-syshot {
+                       label = "front-syshot";
+                       gpios = <&gpio ASPEED_GPIO(J, 3) GPIO_ACTIVE_LOW>;
+               };
+
+               front-memory {
+                       label = "front-memory";
+                       gpios = <&gpio ASPEED_GPIO(S, 7) GPIO_ACTIVE_LOW>;
+               };
+
+               identify {
+                       label = "identify";
+                       gpios = <&gpio ASPEED_GPIO(AA, 0) GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
+                       <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>,
+                       <&adc 8>, <&adc 9>, <&adc 10>, <&adc 11>,
+                       <&adc 12>, <&adc 13>, <&adc 14>, <&adc 15>;
+       };
+};
+
+&fmc {
+       status = "okay";
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bmc";
+               spi-max-frequency = <50000000>;
+#include "openbmc-flash-layout.dtsi"
+       };
+};
+
+&spi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1_default>;
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "bios";
+               spi-max-frequency = <100000000>;
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&mac0 {
+       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;
+};
+
+&mac1 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
+};
+
+&gpio {
+       status = "okay";
+       /* Enable GPIOE0 and GPIOE2 pass-through by default */
+       pinctrl-names = "pass-through";
+       pinctrl-0 = <&pinctrl_gpie0_default
+                       &pinctrl_gpie2_default>;
+       gpio-line-names =
+       /*A0-A7*/       "","MAC2LINK","BMC_RESET_CPLD","","BMC_SCL9","","MAC2MDC_R","",
+       /*B0-B7*/       "BMC_INIT_OK","FM_SKU_ID2","FM_SPD_DDRCPU_LVLSHFT_DIS_R_N",
+                               "FM_CPU_MSMI_CATERR_LVT3_BMC_N","","FM_CPU0_PROCHOT_LVT3_N",
+                               "FM_CPU_MEM_THERMTRIP_LVT3_N","BIOS_LOAD_DEFAULT_R_N",
+       /*C0-C7*/       "","","","","","","","",
+       /*D0-D7*/       "","BMC_SD2CMD","BMC_SD2DAT0","BMC_SD2DAT1","BMC_SD2DAT2",
+                               "BMC_SD2DAT3","BMC_SD2DET","BMC_SD2WPT",
+       /*E0-E7*/       "FM_BOARD_ID0","FM_BOARD_ID1","FM_BOARD_ID2","FM_BOARD_ID3",
+                               "FM_BOARD_ID4","FM_BOARD_ID5","","",
+       /*F0-F7*/       "PSU1_PRESENT_N","PSU2_PRESENT_N","FAN_FAULT_LED_N","PSU_FAULT_LED_N",
+                               "BIOS_DEBUG_MODE_N","FP_LCD_RESET","FAN_TYPE_SEL",
+                               "RST_GLB_RST_WARN_N",
+       /*G0-G7*/       "IRQ_LPTM21L_ALERT_N","IRQ_PLD_ALERT_N","AC_FAIL_N","FP_LCD_PRESENT_BMC",
+                               "BMC_JTAG_TCK_MUX_SEL","BMC_BIOS_RESERVED","SYS_NMI_N","BMC_NMI_N",
+       /*H0-H7*/       "JTAG_BMC_TDI","JTAG_BMC_TDO","JTAG_BMC_TCK","JTAG_BMC_TMS","FM_BOARD_ID6",
+                               "FM_SKU_ID0","IRQ_SML1_PMBUS_ALERT_N","IRQ_SML0_ALERT_MUX_N",
+       /*I0-I7*/       "FM_CPU_ERR0_LVT3_BMC_N","FM_CPU_ERR1_LVT3_BMC_N","FM_BMC_PCH_SCI_LPC_N",
+                               "FM_SYS_THROTTLE_LVC3","SPI2_PCH_CS0_N","","","",
+       /*J0-J7*/       "FM_CPU0_SKTOCC_LVT3_N","FM_CPU1_SKTOCC_LVT3_N","","SYSHOT_FAULT_LED_N",
+                               "VGA_HSYNC","VGA_VSYNC","","",
+       /*K0-K7*/       "","","","","","","","",
+       /*L0-L7*/       "","","","","","","SYS_UART_TXD1","SYS_UART_RXD1",
+       /*M0-M7*/       "","","","","","","","",
+       /*N0-N7*/       "","","","","","","","",
+       /*O0-O7*/       "","","","","","","","",
+       /*P0-P7*/       "","","","","","","","",
+       /*Q0-Q7*/       "","","","","","","FM_PCH_BMC_THERMTRIP_N","INTRUDER_N",
+       /*R0-R7*/       "SPI_BMC_BOOT_CS1_R_N","FM_CPU_MEMHOT_LVC3_N",
+                               "DBP_CPU_PREQ_N","FM_CPU_ERR2_LVT3_BMC_N",
+                               "RISER_NCSI_EN_N","","LOM_NCSI_EN_N","OCP_NCSI_EN_N",
+       /*S0-S7*/       "BMC_XDP_PRDY_N","SIO_POWER_GOOD","BMC_PWR_DEBUG_R_N","BMC_DEBUG_EN_R_N","",
+                               "GPIOS5_BMC","","GPIOS7_BMC",
+       /*T0-T7*/       "","","","","","","","",
+       /*U0-U7*/       "","","","","","","","",
+       /*V0-V7*/       "","","","","","","","",
+       /*W0-W7*/       "","","","","","","","",
+       /*X0-X7*/       "","","","","","","","",
+       /*Y0-Y7*/       "","BMC_DET_UID_N","BMC_JTAG_SEL","SIO_ONCONTROL","","","","",
+       /*Z0-Z7*/       "XDP_PRESENT_N","DBP_SYSPWROK","BMC_JTAG_SEL","FM_SMI_ACTIVE_N","",
+                               "GPIOZ5","","",
+       /*AA0-AA7*/     "FP_BMC_SYSLED_N","PS_PWROK","RST_PLTRST_BMC_N","HDA_SDO_BMC",
+                               "FM_SLPS4_R_N","","POWER_BUTTON","POWER_OUT",
+       /*AB0-AB7*/     "RESET_OUT","RESET_BUTTON","BIOS_REFLASH","POST_COMPLETE","","","","",
+       /*AC0-AC7*/     "","","","","","","","";
+};
+
+&i2c0 {
+       /* FP_LCD */
+       status = "okay";
+};
+
+&i2c1 {
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c256";
+               reg = <0x50>;
+               label = "fru";
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       tmp112@48 {
+               compatible = "ti,tmp112";
+               reg = <0x48>;
+               label = "inlet";
+       };
+
+       tmp112@49 {
+               compatible = "ti,tmp112";
+               reg = <0x49>;
+               label = "outlet";
+       };
+
+       pca9548@70 {
+               compatible = "nxp,pca9548";
+               reg = <0x70>;
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       pca9548@70 {
+               compatible = "nxp,pca9548";
+               reg = <0x70>;
+       };
+
+       pca9548@71 {
+               compatible = "nxp,pca9548";
+               reg = <0x71>;
+       };
+
+       pca9548@72 {
+               compatible = "nxp,pca9548";
+               reg = <0x72>;
+       };
+};
+
+&i2c4 {
+       /* IPMB */
+       status = "okay";
+};
+
+&i2c5 {
+       status = "okay";
+
+       pca9548@70 {
+               compatible = "nxp,pca9548";
+               reg = <0x70>;
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       pca9548@70 {
+               compatible = "nxp,pca9548";
+               reg = <0x70>;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+
+       adm1278@33 {
+               compatible = "adi,adm1293";
+               reg = <0x33>;
+       };
+
+       adm1278@32 {
+               compatible = "adi,adm1293";
+               reg = <0x32>;
+       };
+
+       adm1278@20 {
+               compatible = "adi,adm1293";
+               reg = <0x20>;
+       };
+};
+
+&i2c8 {
+       status = "okay";
+
+       pca0: pca9555@23 {
+               compatible = "nxp,pca9555";
+               reg = <0x23>;
+               #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>;
+               };
+       };
+
+       pca1: pca9555@22 {
+               compatible = "nxp,pca9555";
+               reg = <0x22>;
+               #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>;
+               };
+       };
+
+       pca2: pca9555@20 {
+               compatible = "nxp,pca9555";
+               reg = <0x20>;
+               #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>;
+               };
+       };
+
+       pca3: pca9555@21 {
+               compatible = "nxp,pca9555";
+               reg = <0x21>;
+               #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>;
+               };
+       };
+};
+
+&i2c9 {
+       /* cpld */
+       status = "okay";
+};
+
+&i2c10 {
+       status = "okay";
+
+       pca4: pca9555@24 {
+               compatible = "nxp,pca9555";
+               reg = <0x24>;
+               #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>;
+               };
+       };
+
+       pca5: pca9555@25 {
+               compatible = "nxp,pca9555";
+               reg = <0x25>;
+               #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>;
+               };
+       };
+};
+
+&i2c11 {
+       status = "okay";
+
+       power-supply@58 {
+               compatible = "inspur,ipsps1";
+               reg = <0x58>;
+       };
+
+       power-supply@59 {
+               compatible = "inspur,ipsps1";
+               reg = <0x59>;
+       };
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&pwm_tacho {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default
+               &pinctrl_pwm2_default &pinctrl_pwm3_default
+               &pinctrl_pwm4_default &pinctrl_pwm5_default
+               &pinctrl_pwm6_default &pinctrl_pwm7_default>;
+
+       fan@0 {
+               reg = <0x00>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x00 0x01>;
+       };
+
+       fan@1 {
+               reg = <0x01>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x02 0x03>;
+       };
+
+       fan@2 {
+               reg = <0x02>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x04 0x05>;
+       };
+
+       fan@3 {
+               reg = <0x03>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x06 0x07>;
+       };
+
+       fan@4 {
+               reg = <0x04>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x08 0x09>;
+       };
+
+       fan@5 {
+               reg = <0x05>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x0a 0x0b>;
+       };
+
+       fan@6 {
+               reg = <0x06>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x0c 0x0d>;
+       };
+
+       fan@7 {
+               reg = <0x07>;
+               aspeed,fan-tach-ch = /bits/ 8 <0x0e 0x0f>;
+       };
+};
+
+&kcs3 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca2>;
+};
+
+&kcs4 {
+       status = "okay";
+       aspeed,lpc-io-reg = <0xca4>;
+};
+
+&adc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_adc0_default &pinctrl_adc1_default
+        &pinctrl_adc2_default &pinctrl_adc3_default &pinctrl_adc4_default
+        &pinctrl_adc5_default &pinctrl_adc6_default &pinctrl_adc7_default
+        &pinctrl_adc8_default &pinctrl_adc9_default &pinctrl_adc10_default
+        &pinctrl_adc11_default &pinctrl_adc12_default &pinctrl_adc13_default
+        &pinctrl_adc14_default &pinctrl_adc15_default>;
+};
+
+&vhub {
+       status = "okay";
+};
+
+&video {
+       status = "okay";
+       memory-region = <&video_engine_memory>;
+};
+
+&vuart {
+       status = "okay";
+};
index e33153d..e39f310 100644 (file)
        /*M0-M7*/       "","","","","","","","",
        /*N0-N7*/       "","","","","","","","",
        /*O0-O7*/       "led-rear-power","led-rear-id","","usb-power","","","","",
-       /*P0-P7*/       "","","","","","","","",
+       /*P0-P7*/       "","","","","","bmc-tpm-reset","","",
        /*Q0-Q7*/       "cfam-reset","","","","","","","fsi-routing",
        /*R0-R7*/       "","","","","","","","",
        /*S0-S7*/       "","","","","","","","",
index 329eaee..73ca1ec 100644 (file)
                                reg = <0x1e780200 0x0100>;
                                clocks = <&syscon ASPEED_CLK_APB>;
                                interrupt-controller;
-                               ngpios = <8>;
                                bus-frequency = <12000000>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&pinctrl_sgpm_default>;
index 7e90d71..6dde51c 100644 (file)
        };
 
        pinctrl_hvi3c3_default: hvi3c3_default {
-               function = "HVI3C3";
+               function = "I3C3";
                groups = "HVI3C3";
        };
 
        pinctrl_hvi3c4_default: hvi3c4_default {
-               function = "HVI3C4";
+               function = "I3C4";
                groups = "HVI3C4";
        };
 
index f96607b..1b47be1 100644 (file)
                                #interrupt-cells = <2>;
                        };
 
+                       sgpiom0: sgpiom@1e780500 {
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               compatible = "aspeed,ast2600-sgpiom";
+                               reg = <0x1e780500 0x100>;
+                               interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_APB2>;
+                               interrupt-controller;
+                               bus-frequency = <12000000>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_sgpm1_default>;
+                               status = "disabled";
+                       };
+
+                       sgpiom1: sgpiom@1e780600 {
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               compatible = "aspeed,ast2600-sgpiom";
+                               reg = <0x1e780600 0x100>;
+                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&syscon ASPEED_CLK_APB2>;
+                               interrupt-controller;
+                               bus-frequency = <12000000>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_sgpm2_default>;
+                               status = "disabled";
+                       };
+
                        gpio1: gpio@1e780800 {
                                #gpio-cells = <2>;
                                gpio-controller;
diff --git a/arch/arm/boot/dts/ast2600-facebook-netbmc-common.dtsi b/arch/arm/boot/dts/ast2600-facebook-netbmc-common.dtsi
new file mode 100644 (file)
index 0000000..051de5b
--- /dev/null
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+#include "aspeed-g6.dtsi"
+#include <dt-bindings/gpio/aspeed-gpio.h>
+
+/ {
+       aliases {
+               mmc0 = &emmc;
+               spi1 = &spi1;
+               spi2 = &spi_gpio;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,9600n8 root=/dev/ram rw vmalloc=640M";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x80000000>;
+       };
+
+       /*
+        * GPIO-based SPI Master is required to access SPI TPM, because
+        * full-duplex SPI transactions are not supported by ASPEED SPI
+        * Controllers.
+        */
+       spi_gpio: spi-gpio {
+               status = "okay";
+               compatible = "spi-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               gpio-sck = <&gpio0 ASPEED_GPIO(X, 3) GPIO_ACTIVE_HIGH>;
+               gpio-mosi = <&gpio0 ASPEED_GPIO(X, 4) GPIO_ACTIVE_HIGH>;
+               gpio-miso = <&gpio0 ASPEED_GPIO(X, 5) GPIO_ACTIVE_HIGH>;
+
+               tpmdev@0 {
+                       compatible = "tcg,tpm_tis-spi";
+                       spi-max-frequency = <33000000>;
+                       reg = <0>;
+               };
+       };
+};
+
+&fmc {
+       status = "okay";
+
+       flash@0 {
+               status = "okay";
+               m25p,fast-read;
+               label = "spi0.0";
+
+#include "facebook-bmc-flash-layout-128.dtsi"
+       };
+
+       flash@1 {
+               status = "okay";
+               m25p,fast-read;
+               label = "spi0.1";
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       flash1@0 {
+                               reg = <0x0 0x8000000>;
+                               label = "flash1";
+                       };
+               };
+       };
+};
+
+&spi1 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&wdt1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&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";
+};
+
+&i2c10 {
+       status = "okay";
+};
+
+&i2c12 {
+       status = "okay";
+};
+
+&i2c13 {
+       status = "okay";
+};
+
+&i2c15 {
+       status = "okay";
+};
+
+&vhub {
+       status = "okay";
+};
+
+&emmc_controller {
+       status = "okay";
+};
+
+&emmc {
+       status = "okay";
+
+       non-removable;
+       max-frequency = <25000000>;
+       bus-width = <4>;
+};
+
+&rtc {
+       status = "okay";
+};
index c4b3750..abe27ad 100644 (file)
 };
 
 &shutdown_controller {
-       atmel,shdwc-debouncer = <976>;
+       debounce-delay-us = <976>;
        atmel,wakeup-rtc-timer;
 
        input@0 {
index edca66c..b1068cc 100644 (file)
@@ -92,6 +92,8 @@
 
        leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
                status = "okay"; /* Conflict with pwm0. */
 
                red {
                                 AT91_PIOA 19 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)     /* PA19 DAT2 periph A with pullup */
                                 AT91_PIOA 20 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)>;   /* PA20 DAT3 periph A with pullup */
                };
+               pinctrl_sdmmc0_cd: sdmmc0_cd {
+                       atmel,pins =
+                               <AT91_PIOA 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+               };
        };
 
        sdmmc1 {
                                      AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
                };
        };
+
+       leds {
+               pinctrl_gpio_leds: gpio_leds {
+                       atmel,pins = <AT91_PIOB 11 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+                                     AT91_PIOB 12 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+                                     AT91_PIOB 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+               };
+       };
 }; /* pinctrl */
 
 &pwm0 {
 &sdmmc0 {
        bus-width = <4>;
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_sdmmc0_default>;
+       pinctrl-0 = <&pinctrl_sdmmc0_default &pinctrl_sdmmc0_cd>;
        status = "okay";
        cd-gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
        disable-wp;
 };
 
 &shutdown_controller {
-       atmel,shdwc-debouncer = <976>;
+       debounce-delay-us = <976>;
        status = "okay";
 
        input@0 {
index e3251f3..b48ac3b 100644 (file)
                                        spi-rx-bus-width = <4>;
                                        m25p,fast-read;
 
-                                       at91bootstrap@00000000 {
+                                       at91bootstrap@0 {
                                                label = "at91bootstrap";
                                                reg = <0x00000000 0x00040000>;
                                        };
 
-                                       bootloader@00040000 {
+                                       bootloader@40000 {
                                                label = "bootloader";
                                                reg = <0x00040000 0x000c0000>;
                                        };
 
-                                       bootloaderenvred@00100000 {
+                                       bootloaderenvred@100000 {
                                                label = "bootloader env redundant";
                                                reg = <0x00100000 0x00040000>;
                                        };
 
-                                       bootloaderenv@00140000 {
+                                       bootloaderenv@140000 {
                                                label = "bootloader env";
                                                reg = <0x00140000 0x00040000>;
                                        };
 
-                                       dtb@00180000 {
+                                       dtb@180000 {
                                                label = "device tree";
                                                reg = <0x00180000 0x00080000>;
                                        };
 
-                                       kernel@00200000 {
+                                       kernel@200000 {
                                                label = "kernel";
                                                reg = <0x00200000 0x00600000>;
                                        };
index a9e6fee..614999d 100644 (file)
                        };
 
                        shdwc@f8048010 {
-                               atmel,shdwc-debouncer = <976>;
+                               debounce-delay-us = <976>;
                                atmel,wakeup-rtc-timer;
 
                                input@0 {
                        adc: adc@fc030000 {
                                vddana-supply = <&vddana>;
                                vref-supply = <&advref>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_mikrobus1_an &pinctrl_mikrobus2_an>;
 
-                               status = "disabled";
+                               status = "okay";
                        };
 
                        pinctrl@fc038000 {
index ff83967..c145c4e 100644 (file)
 };
 
 &shutdown_controller {
-       atmel,shdwc-debouncer = <976>;
+       debounce-delay-us = <976>;
        atmel,wakeup-rtc-timer;
 
        input@0 {
index bd64721..e06b587 100644 (file)
                dmas = <0>, <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_flx4_default>;
+               i2c-digital-filter;
+               i2c-digital-filter-width-ns = <35>;
                status = "okay";
 
                mcp16502@5b {
 &i2c0 { /* mikrobus i2c */
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_mikrobus_i2c>;
+       i2c-digital-filter;
+       i2c-digital-filter-width-ns = <35>;
        status = "okay";
 };
 
        dmas = <0>, <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_i2c1_default>;
+       i2c-digital-filter;
+       i2c-digital-filter-width-ns = <35>;
        status = "okay";
 
        eeprom@50 {
 };
 
 &shutdown_controller {
-       atmel,shdwc-debouncer = <976>;
+       debounce-delay-us = <976>;
        atmel,wakeup-rtc-timer;
 
        input@0 {
index dfd150e..8ed58af 100644 (file)
                                                        reg = <0x40000 0xc0000>;
                                                };
 
-                                               bootloaderenvred@0x100000 {
+                                               bootloaderenvred@100000 {
                                                        label = "bootloader env redundant";
                                                        reg = <0x100000 0x40000>;
                                                };
 
-                                               bootloaderenv@0x140000 {
+                                               bootloaderenv@140000 {
                                                        label = "bootloader env";
                                                        reg = <0x140000 0x40000>;
                                                };
                        };
 
                        shdwc@f8048010 {
-                               atmel,shdwc-debouncer = <976>;
+                               debounce-delay-us = <976>;
 
                                input@0 {
                                        reg = <0>;
index 509c732..b1e854f 100644 (file)
                                        spi-rx-bus-width = <4>;
                                        m25p,fast-read;
 
-                                       at91bootstrap@00000000 {
+                                       at91bootstrap@0 {
                                                label = "at91bootstrap";
                                                reg = <0x00000000 0x00040000>;
                                        };
 
-                                       bootloader@00040000 {
+                                       bootloader@40000 {
                                                label = "bootloader";
                                                reg = <0x00040000 0x000c0000>;
                                        };
 
-                                       bootloaderenvred@00100000 {
+                                       bootloaderenvred@100000 {
                                                label = "bootloader env redundant";
                                                reg = <0x00100000 0x00040000>;
                                        };
 
-                                       bootloaderenv@00140000 {
+                                       bootloaderenv@140000 {
                                                label = "bootloader env";
                                                reg = <0x00140000 0x00040000>;
                                        };
 
-                                       dtb@00180000 {
+                                       dtb@180000 {
                                                label = "device tree";
                                                reg = <0x00180000 0x00080000>;
                                        };
 
-                                       kernel@00200000 {
+                                       kernel@200000 {
                                                label = "kernel";
                                                reg = <0x00200000 0x00600000>;
                                        };
 
-                                       misc@00800000 {
+                                       misc@800000 {
                                                label = "misc";
                                                reg = <0x00800000 0x00000000>;
                                        };
                        };
 
                        shdwc@f8048010 {
-                               atmel,shdwc-debouncer = <976>;
+                               debounce-delay-us = <976>;
                                atmel,wakeup-rtc-timer;
 
                                input@0 {
index 9c55a92..d72c042 100644 (file)
@@ -57,6 +57,8 @@
                        };
 
                        spi0: spi@f0004000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_spi0_cs>;
                                cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
                                status = "okay";
                        };
                        };
 
                        spi1: spi@f8008000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_spi1_cs>;
                                cs-gpios = <&pioC 25 0>;
                                status = "okay";
                        };
                                                        <AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
                                                         AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
                                        };
+
+                                       pinctrl_gpio_leds: gpio_leds_default {
+                                               atmel,pins =
+                                                       <AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+                                                        AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+
+                                       pinctrl_spi0_cs: spi0_cs_default {
+                                               atmel,pins =
+                                                       <AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+                                                        AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+
+                                       pinctrl_spi1_cs: spi1_cs_default {
+                                               atmel,pins = <AT91_PIOC 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+
+                                       pinctrl_vcc_mmc0_reg_gpio: vcc_mmc0_reg_gpio_default {
+                                               atmel,pins = <AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
                                };
                        };
                };
 
        vcc_mmc0_reg: fixedregulator_mmc0 {
                compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_vcc_mmc0_reg_gpio>;
                gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
                regulator-name = "mmc0-card-supply";
                regulator-min-microvolt = <3300000>;
 
        leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+               status = "okay";
 
                d2 {
                        label = "d2";
                };
 
                d3 {
-                       label = "d3";
+                       label = "d3"; /* Conflict with EBI CS0, USART2 CTS. */
                        gpios = <&pioE 24 GPIO_ACTIVE_HIGH>;
                };
        };
index 0b3ad1b..d241c24 100644 (file)
@@ -7,6 +7,7 @@
  */
 /dts-v1/;
 #include "sama5d4.dtsi"
+#include <dt-bindings/input/input.h>
 
 / {
        model = "Atmel SAMA5D4 Xplained";
                                status = "okay";
                        };
 
-                       spi0: spi@f8010000 {
-                               cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
-                               status = "okay";
-                               m25p80@0 {
-                                       compatible = "atmel,at25df321a";
-                                       spi-max-frequency = <50000000>;
-                                       reg = <0>;
-                               };
-                       };
-
                        i2c0: i2c@f8014000 {
                                i2c-digital-filter;
                                status = "okay";
@@ -90,6 +81,8 @@
                        };
 
                        spi1: spi@fc018000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_spi0_cs>;
                                cs-gpios = <&pioB 21 0>;
                                status = "okay";
                        };
                                                atmel,pins =
                                                        <AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
                                        };
+                                       pinctrl_spi0_cs: spi0_cs_default {
+                                               atmel,pins =
+                                                       <AT91_PIOB 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+                                       pinctrl_gpio_leds: gpio_leds_default {
+                                               atmel,pins =
+                                                       <AT91_PIOD 30 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+                                                        AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+                                       pinctrl_vcc_mmc1_reg: vcc_mmc1_reg {
+                                               atmel,pins =
+                                                       <AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
                                };
                        };
                };
                pb_user1 {
                        label = "pb_user1";
                        gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
-                       linux,code = <0x100>;
+                       linux,code = <KEY_PROG1>;
                        wakeup-source;
                };
        };
 
        leds {
                compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
                status = "okay";
 
                d8 {
 
        vcc_mmc1_reg: fixedregulator_mmc1 {
                compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_vcc_mmc1_reg>;
                gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
                regulator-name = "VDD MCI1";
                regulator-min-microvolt = <3300000>;
diff --git a/arch/arm/boot/dts/at91-sama7g5ek.dts b/arch/arm/boot/dts/at91-sama7g5ek.dts
new file mode 100644 (file)
index 0000000..4cbed98
--- /dev/null
@@ -0,0 +1,656 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ *  at91-sama7g5ek.dts - Device Tree file for SAMA7G5-EK board
+ *
+ *  Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries
+ *
+ *  Author: Eugen Hristev <eugen.hristev@microchip.com>
+ *  Author: Claudiu Beznea <claudiu.beznea@microchip.com>
+ *
+ */
+/dts-v1/;
+#include "sama7g5-pinfunc.h"
+#include "sama7g5.dtsi"
+#include <dt-bindings/mfd/atmel-flexcom.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Microchip SAMA7G5-EK";
+       compatible = "microchip,sama7g5ek", "microchip,sama7g5", "microchip,sama7";
+
+       chosen {
+               bootargs = "rw root=/dev/mmcblk1p2 rootfstype=ext4 rootwait";
+               stdout-path = "serial0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart3;
+               serial1 = &uart4;
+               serial2 = &uart7;
+               serial3 = &uart0;
+               i2c0 = &i2c1;
+               i2c1 = &i2c8;
+               i2c2 = &i2c9;
+       };
+
+       clocks {
+               slow_xtal {
+                       clock-frequency = <32768>;
+               };
+
+               main_xtal {
+                       clock-frequency = <24000000>;
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_key_gpio_default>;
+
+               bp1 {
+                       label = "PB_USER";
+                       gpios = <&pioA PIN_PA12 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_PROG1>;
+                       wakeup-source;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_led_gpio_default>;
+               status = "okay"; /* Conflict with pwm. */
+
+               red_led {
+                       label = "red";
+                       gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
+               };
+
+               green_led {
+                       label = "green";
+                       gpios = <&pioA PIN_PA13 GPIO_ACTIVE_HIGH>;
+               };
+
+               blue_led {
+                       label = "blue";
+                       gpios = <&pioA PIN_PD20 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       /* 512 M */
+       memory@60000000 {
+               device_type = "memory";
+               reg = <0x60000000 0x20000000>;
+       };
+
+       sound: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "sama7g5ek audio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               simple-audio-card,dai-link@0 {
+                       reg = <0>;
+                       cpu {
+                               sound-dai = <&spdiftx>;
+                       };
+                       codec {
+                               sound-dai = <&spdif_out>;
+                       };
+               };
+               simple-audio-card,dai-link@1 {
+                       reg = <1>;
+                       cpu {
+                               sound-dai = <&spdifrx>;
+                       };
+                       codec {
+                               sound-dai = <&spdif_in>;
+                       };
+               };
+       };
+
+       spdif_in: spdif-in {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dir";
+       };
+
+       spdif_out: spdif-out {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dit";
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vddcpu>;
+};
+
+&dma0 {
+       status = "okay";
+};
+
+&dma1 {
+       status = "okay";
+};
+
+&dma2 {
+       status = "okay";
+};
+
+&flx0 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "disabled";
+
+       uart0: serial@200 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx0_default>;
+               status = "disabled";
+       };
+};
+
+&flx1 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "okay";
+
+       i2c1: i2c@600 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c1_default>;
+               i2c-analog-filter;
+               i2c-digital-filter;
+               i2c-digital-filter-width-ns = <35>;
+               status = "okay";
+
+               mcp16502@5b {
+                       compatible = "microchip,mcp16502";
+                       reg = <0x5b>;
+                       status = "okay";
+
+                       regulators {
+                               vdd_3v3: VDD_IO {
+                                       regulator-name = "VDD_IO";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <3700000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+                               };
+
+                               vddioddr: VDD_DDR {
+                                       regulator-name = "VDD_DDR";
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1450000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+                               };
+
+                               vddcore: VDD_CORE {
+                                       regulator-name = "VDD_CORE";
+                                       regulator-min-microvolt = <1100000>;
+                                       regulator-max-microvolt = <1850000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-always-on;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+                               };
+
+                               vddcpu: VDD_OTHER {
+                                       regulator-name = "VDD_OTHER";
+                                       regulator-min-microvolt = <1125000>;
+                                       regulator-max-microvolt = <1850000>;
+                                       regulator-initial-mode = <2>;
+                                       regulator-allowed-modes = <2>, <4>;
+                                       regulator-ramp-delay = <3125>;
+                                       regulator-always-on;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                               regulator-mode = <4>;
+                                       };
+                               };
+
+                               vldo1: LDO1 {
+                                       regulator-name = "LDO1";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <3700000>;
+                                       regulator-always-on;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
+                               };
+
+                               vldo2: LDO2 {
+                                       regulator-name = "LDO2";
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <3700000>;
+
+                                       regulator-state-standby {
+                                               regulator-on-in-suspend;
+                                       };
+
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
+                               };
+                       };
+               };
+       };
+};
+
+&flx3 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "okay";
+
+       uart3: serial@200 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx3_default>;
+               status = "okay";
+       };
+};
+
+&flx4 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "okay";
+
+       uart4: serial@200 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx4_default>;
+               status = "okay";
+       };
+};
+
+&flx7 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
+       status = "okay";
+
+       uart7: serial@200 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flx7_default>;
+               status = "okay";
+       };
+};
+
+&flx8 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "okay";
+
+       i2c8: i2c@600 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c8_default>;
+               i2c-analog-filter;
+               i2c-digital-filter;
+               i2c-digital-filter-width-ns = <35>;
+               status = "okay";
+       };
+};
+
+&flx9 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "okay";
+
+       i2c9: i2c@600 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c9_default>;
+               i2c-analog-filter;
+               i2c-digital-filter;
+               i2c-digital-filter-width-ns = <35>;
+               status = "okay";
+       };
+};
+
+&flx11 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
+       status = "okay";
+
+       spi11: spi@400 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
+               status = "okay";
+       };
+};
+
+&gmac0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gmac0_default &pinctrl_gmac0_txck_default &pinctrl_gmac0_phy_irq>;
+       phy-mode = "rgmii-id";
+       status = "okay";
+
+       ethernet-phy@7 {
+               reg = <0x7>;
+               interrupt-parent = <&pioA>;
+               interrupts = <PIN_PA31 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&gmac1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gmac1_default &pinctrl_gmac1_phy_irq>;
+       phy-mode = "rmii";
+       status = "okay";
+
+       ethernet-phy@0 {
+               reg = <0x0>;
+               interrupt-parent = <&pioA>;
+               interrupts = <PIN_PA21 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&i2s0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2s0_default>;
+};
+
+&pioA {
+       pinctrl_flx0_default: flx0_default {
+               pinmux = <PIN_PE3__FLEXCOM0_IO0>,
+                        <PIN_PE4__FLEXCOM0_IO1>,
+                        <PIN_PE6__FLEXCOM0_IO3>,
+                        <PIN_PE7__FLEXCOM0_IO4>;
+               bias-disable;
+       };
+
+       pinctrl_flx3_default: flx3_default {
+               pinmux = <PIN_PD16__FLEXCOM3_IO0>,
+                        <PIN_PD17__FLEXCOM3_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_flx4_default: flx4_default {
+               pinmux = <PIN_PD18__FLEXCOM4_IO0>,
+                        <PIN_PD19__FLEXCOM4_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_flx7_default: flx7_default {
+               pinmux = <PIN_PC23__FLEXCOM7_IO0>,
+                        <PIN_PC24__FLEXCOM7_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_gmac0_default: gmac0_default {
+               pinmux = <PIN_PA16__G0_TX0>,
+                        <PIN_PA17__G0_TX1>,
+                        <PIN_PA26__G0_TX2>,
+                        <PIN_PA27__G0_TX3>,
+                        <PIN_PA19__G0_RX0>,
+                        <PIN_PA20__G0_RX1>,
+                        <PIN_PA28__G0_RX2>,
+                        <PIN_PA29__G0_RX3>,
+                        <PIN_PA15__G0_TXEN>,
+                        <PIN_PA30__G0_RXCK>,
+                        <PIN_PA18__G0_RXDV>,
+                        <PIN_PA22__G0_MDC>,
+                        <PIN_PA23__G0_MDIO>,
+                        <PIN_PA25__G0_125CK>;
+               bias-disable;
+       };
+
+       pinctrl_gmac0_txck_default: gmac0_txck_default {
+               pinmux = <PIN_PA24__G0_TXCK>;
+               bias-pull-up;
+       };
+
+       pinctrl_gmac0_phy_irq: gmac0_phy_irq {
+               pinmux = <PIN_PA31__GPIO>;
+               bias-disable;
+       };
+
+       pinctrl_gmac1_default: gmac1_default {
+               pinmux = <PIN_PD30__G1_TXCK>,
+                        <PIN_PD22__G1_TX0>,
+                        <PIN_PD23__G1_TX1>,
+                        <PIN_PD21__G1_TXEN>,
+                        <PIN_PD25__G1_RX0>,
+                        <PIN_PD26__G1_RX1>,
+                        <PIN_PD27__G1_RXER>,
+                        <PIN_PD24__G1_RXDV>,
+                        <PIN_PD28__G1_MDC>,
+                        <PIN_PD29__G1_MDIO>;
+               bias-disable;
+       };
+
+       pinctrl_gmac1_phy_irq: gmac1_phy_irq {
+               pinmux = <PIN_PA21__GPIO>;
+               bias-disable;
+       };
+
+       pinctrl_i2c1_default: i2c1_default {
+               pinmux = <PIN_PC9__FLEXCOM1_IO0>,
+                        <PIN_PC10__FLEXCOM1_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_i2c8_default: i2c8_default {
+               pinmux = <PIN_PC14__FLEXCOM8_IO0>,
+                        <PIN_PC13__FLEXCOM8_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_i2c9_default: i2c9_default {
+               pinmux = <PIN_PC18__FLEXCOM9_IO0>,
+                        <PIN_PC19__FLEXCOM9_IO1>;
+               bias-disable;
+       };
+
+       pinctrl_i2s0_default: i2s0_default {
+               pinmux = <PIN_PB23__I2SMCC0_CK>,
+                        <PIN_PB24__I2SMCC0_WS>,
+                        <PIN_PB25__I2SMCC0_DOUT1>,
+                        <PIN_PB26__I2SMCC0_DOUT0>,
+                        <PIN_PB27__I2SMCC0_MCK>;
+               bias-disable;
+       };
+
+       pinctrl_key_gpio_default: key_gpio_default {
+               pinmux = <PIN_PA12__GPIO>;
+               bias-pull-up;
+       };
+
+       pinctrl_led_gpio_default: led_gpio_default {
+               pinmux = <PIN_PA13__GPIO>,
+                        <PIN_PB8__GPIO>,
+                        <PIN_PD20__GPIO>;
+               bias-pull-up;
+       };
+
+       pinctrl_mikrobus1_an_default: mikrobus1_an_default {
+               pinmux = <PIN_PD0__GPIO>;
+               bias-disable;
+       };
+
+       pinctrl_mikrobus2_an_default: mikrobus2_an_default {
+               pinmux = <PIN_PD1__GPIO>;
+               bias-disable;
+       };
+
+       pinctrl_mikrobus1_pwm2_default: mikrobus1_pwm2_default {
+               pinmux = <PIN_PA13__PWMH2>;
+               bias-disable;
+       };
+
+       pinctrl_mikrobus2_pwm3_default: mikrobus2_pwm3_default {
+               pinmux = <PIN_PD20__PWMH3>;
+               bias-disable;
+       };
+
+       pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
+               pinmux = <PIN_PB6__FLEXCOM11_IO3>;
+               bias-disable;
+       };
+
+       pinctrl_mikrobus1_spi: mikrobus1_spi {
+               pinmux = <PIN_PB3__FLEXCOM11_IO0>,
+                        <PIN_PB4__FLEXCOM11_IO1>,
+                        <PIN_PB5__FLEXCOM11_IO2>;
+               bias-disable;
+       };
+
+       pinctrl_sdmmc0_default: sdmmc0_default {
+               cmd_data {
+                       pinmux = <PIN_PA1__SDMMC0_CMD>,
+                                <PIN_PA3__SDMMC0_DAT0>,
+                                <PIN_PA4__SDMMC0_DAT1>,
+                                <PIN_PA5__SDMMC0_DAT2>,
+                                <PIN_PA6__SDMMC0_DAT3>,
+                                <PIN_PA7__SDMMC0_DAT4>,
+                                <PIN_PA8__SDMMC0_DAT5>,
+                                <PIN_PA9__SDMMC0_DAT6>,
+                                <PIN_PA10__SDMMC0_DAT7>;
+                       bias-pull-up;
+               };
+
+               ck_cd_rstn_vddsel {
+                       pinmux = <PIN_PA0__SDMMC0_CK>,
+                                <PIN_PA2__SDMMC0_RSTN>,
+                                <PIN_PA11__SDMMC0_DS>;
+                       bias-pull-up;
+               };
+       };
+
+       pinctrl_sdmmc1_default: sdmmc1_default {
+               cmd_data {
+                       pinmux = <PIN_PB29__SDMMC1_CMD>,
+                                <PIN_PB31__SDMMC1_DAT0>,
+                                <PIN_PC0__SDMMC1_DAT1>,
+                                <PIN_PC1__SDMMC1_DAT2>,
+                                <PIN_PC2__SDMMC1_DAT3>;
+                       bias-pull-up;
+               };
+
+               ck_cd_rstn_vddsel {
+                       pinmux = <PIN_PB30__SDMMC1_CK>,
+                                <PIN_PB28__SDMMC1_RSTN>,
+                                <PIN_PC5__SDMMC1_1V8SEL>,
+                                <PIN_PC4__SDMMC1_CD>;
+                       bias-pull-up;
+               };
+       };
+
+       pinctrl_sdmmc2_default: sdmmc2_default {
+               cmd_data {
+                       pinmux = <PIN_PD3__SDMMC2_CMD>,
+                                <PIN_PD5__SDMMC2_DAT0>,
+                                <PIN_PD6__SDMMC2_DAT1>,
+                                <PIN_PD7__SDMMC2_DAT2>,
+                                <PIN_PD8__SDMMC2_DAT3>;
+                       bias-pull-up;
+               };
+
+               ck {
+                       pinmux = <PIN_PD4__SDMMC2_CK>;
+                       bias-pull-up;
+               };
+       };
+
+       pinctrl_spdifrx_default: spdifrx_default {
+               pinmux = <PIN_PB0__SPDIF_RX>;
+               bias-disable;
+       };
+
+       pinctrl_spdiftx_default: spdiftx_default {
+               pinmux = <PIN_PB1__SPDIF_TX>;
+               bias-disable;
+       };
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mikrobus1_pwm2_default &pinctrl_mikrobus2_pwm3_default>;
+       status = "disabled"; /* Conflict with leds. */
+};
+
+&rtt {
+       atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
+};
+
+&sdmmc0 {
+       bus-width = <8>;
+       non-removable;
+       no-1-8-v;
+       sdhci-caps-mask = <0x0 0x00200000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdmmc0_default>;
+       status = "okay";
+};
+
+&sdmmc1 {
+       bus-width = <4>;
+       no-1-8-v;
+       sdhci-caps-mask = <0x0 0x00200000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdmmc1_default>;
+       status = "okay";
+};
+
+&sdmmc2 {
+       bus-width = <4>;
+       no-1-8-v;
+       sdhci-caps-mask = <0x0 0x00200000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdmmc2_default>;
+};
+
+&spdifrx {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spdifrx_default>;
+       status = "okay";
+};
+
+&spdiftx {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spdiftx_default>;
+       status = "okay";
+};
+
+&trng {
+       status = "okay";
+};
+
+&vddout25 {
+       vin-supply = <&vdd_3v3>;
+       status = "okay";
+};
index 91d1018..8ef48c0 100644 (file)
                        label = "X-Loader";
                        reg = <0 0x80000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "U-Boot";
                        reg = <0x80000 0x1c0000>;
                };
-               partition@0x1c0000 {
+               partition@1c0000 {
                        label = "Environment";
                        reg = <0x240000 0x40000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "Kernel";
                        reg = <0x280000 0x500000>;
                };
-               partition@0x780000 {
+               partition@780000 {
                        label = "Filesystem";
                        reg = <0x780000 0xf880000>;
                };
index cf05d53..5126e2d 100644 (file)
                        label = "X-Loader";
                        reg = <0 0x80000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "U-Boot";
                        reg = <0x80000 0x1c0000>;
                };
-               partition@0x1c0000 {
+               partition@1c0000 {
                        label = "Environment";
                        reg = <0x240000 0x40000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "Kernel";
                        reg = <0x280000 0x500000>;
                };
-               partition@0x780000 {
+               partition@780000 {
                        label = "Filesystem";
                        reg = <0x780000 0xf880000>;
                };
diff --git a/arch/arm/boot/dts/dra74x-p.dtsi b/arch/arm/boot/dts/dra74x-p.dtsi
new file mode 100644 (file)
index 0000000..006189d
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "dra74x.dtsi"
+
+/ {
+       compatible = "ti,dra762", "ti,dra7";
+
+       ocp {
+               emif1: emif@4c000000 {
+                       compatible = "ti,emif-dra7xx";
+                       reg = <0x4c000000 0x200>;
+                       interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+       };
+};
+
+/* MCAN interrupts are hard-wired to irqs 67, 68 */
+&crossbar_mpu {
+       ti,irqs-skip = <10 67 68 133 139 140>;
+};
index a09e7bd..bc4ae91 100644 (file)
@@ -9,13 +9,6 @@
        compatible = "ti,dra762", "ti,dra7";
 
        ocp {
-               emif1: emif@4c000000 {
-                       compatible = "ti,emif-dra7xx";
-                       reg = <0x4c000000 0x200>;
-                       interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
-                       status = "disabled";
-               };
-
                target-module@42c01900 {
                        compatible = "ti,sysc-dra7-mcan", "ti,sysc";
                        ranges = <0x0 0x42c00000 0x2000>;
        };
 };
 
-/* MCAN interrupts are hard-wired to irqs 67, 68 */
-&crossbar_mpu {
-       ti,irqs-skip = <10 67 68 133 139 140>;
-};
-
 &scm_conf_clocks {
        dpll_gmac_h14x2_ctrl_ck: dpll_gmac_h14x2_ctrl_ck@3fc {
                #clock-cells = <0>;
index 77ab719..a10b789 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                       };
+               };
+
                cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
index 70baad9..7e7d65c 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                       };
+               };
+
                cpu0: cpu@900 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
index a142fe8..d380204 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+               };
+
                cpu0: cpu@a00 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
index 2ea2caa..4ffa925 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                       };
+               };
+
                cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
index 973448c..52fa211 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu2>;
+                               };
+                               core1 {
+                                       cpu = <&cpu3>;
+                               };
+                               core2 {
+                                       cpu = <&cpu4>;
+                               };
+                               core3 {
+                                       cpu = <&cpu5>;
+                               };
+                       };
+               };
+
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0x0>;
                        cci-control-port = <&cci_control1>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0x1>;
                        cci-control-port = <&cci_control1>;
                };
 
-               cpu@100 {
+               cpu2: cpu@100 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x100>;
                        cci-control-port = <&cci_control0>;
                };
 
-               cpu@101 {
+               cpu3: cpu@101 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x101>;
                        cci-control-port = <&cci_control0>;
                };
 
-               cpu@102 {
+               cpu4: cpu@102 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x102>;
                        cci-control-port = <&cci_control0>;
                };
 
-               cpu@103 {
+               cpu5: cpu@103 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x103>;
index 58d1c54..e9f4eb7 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
                cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
index 4b641b9..412a0bb 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
                cpu0: cpu@100 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
diff --git a/arch/arm/boot/dts/facebook-bmc-flash-layout-128.dtsi b/arch/arm/boot/dts/facebook-bmc-flash-layout-128.dtsi
new file mode 100644 (file)
index 0000000..7f3652d
--- /dev/null
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0+
+// Copyright (c) 2020 Facebook Inc.
+
+partitions {
+       compatible = "fixed-partitions";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       /*
+        * u-boot partition: 896KB.
+        */
+       u-boot@0 {
+               reg = <0x0 0xe0000>;
+               label = "u-boot";
+       };
+
+       /*
+        * u-boot environment variables: 64KB.
+        */
+       u-boot-env@e0000 {
+               reg = <0xe0000 0x10000>;
+               label = "env";
+       };
+
+       /*
+        * image metadata partition (64KB), used by Facebook internal
+        * tools.
+        */
+       image-meta@f0000 {
+               reg = <0xf0000 0x10000>;
+               label = "meta";
+       };
+
+       /*
+        * FIT image: 119 MB.
+        */
+       fit@100000 {
+               reg = <0x100000 0x7700000>;
+               label = "fit";
+       };
+
+       /*
+        * "data0" partition (8MB) is used by Facebook BMC platforms as
+        * persistent data store.
+        */
+       data0@7800000 {
+               reg = <0x7800000 0x800000>;
+               label = "data0";
+       };
+
+       /*
+        * Although the master partition can be created by enabling
+        * MTD_PARTITIONED_MASTER option, below "flash0" partition is
+        * explicitly created to avoid breaking legacy applications.
+        */
+       flash0@0 {
+               reg = <0x0 0x8000000>;
+               label = "flash0";
+       };
+};
diff --git a/arch/arm/boot/dts/imx6dl-dhcom-picoitx.dts b/arch/arm/boot/dts/imx6dl-dhcom-picoitx.dts
new file mode 100644 (file)
index 0000000..038bb00
--- /dev/null
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2021 DH electronics GmbH
+ *
+ * DHCOM iMX6 variant:
+ * DHCM-iMX6DL-C0800-R102-F0819-E-SD-RTC-T-HS-I-01D2
+ * DHCOM PCB number: 493-300 or newer
+ * PicoITX PCB number: 487-600 or newer
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-dhcom-som.dtsi"
+#include "imx6qdl-dhcom-picoitx.dtsi"
+
+/ {
+       model = "DH electronics i.MX6DL DHCOM on PicoITX";
+       compatible = "dh,imx6dl-dhcom-picoitx", "dh,imx6dl-dhcom-som",
+                    "fsl,imx6dl";
+};
diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts b/arch/arm/boot/dts/imx6dl-skov-revc-lt2.dts
new file mode 100644 (file)
index 0000000..667b8fa
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-skov-cpu.dtsi"
+#include "imx6qdl-skov-cpu-revc.dtsi"
+
+/ {
+       model = "SKOV IMX6 CPU SoloCore";
+       compatible = "skov,imx6dl-skov-revc-lt2", "fsl,imx6dl";
+};
diff --git a/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts b/arch/arm/boot/dts/imx6dl-skov-revc-lt6.dts
new file mode 100644 (file)
index 0000000..5dcc433
--- /dev/null
@@ -0,0 +1,106 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+/dts-v1/;
+#include "imx6dl.dtsi"
+#include "imx6qdl-skov-cpu.dtsi"
+#include "imx6qdl-skov-cpu-revc.dtsi"
+
+/ {
+       model = "SKOV IMX6 CPU SoloCore";
+       compatible = "skov,imx6dl-skov-revc-lt6", "fsl,imx6dl";
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight>;
+               enable-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
+               pwms = <&pwm2 0 20000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <17>;
+               default-brightness-level = <8>;
+               power-supply = <&reg_24v0>;
+       };
+
+       display {
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ipu1>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       display0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+
+       panel {
+               compatible = "logictechno,lttd800480070-l6wh-rt";
+               backlight = <&backlight>;
+               power-supply = <&reg_3v3>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display0_out>;
+                       };
+               };
+       };
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&iomuxc {
+       pinctrl_backlight: backlightgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_RGMII_TD3__GPIO6_IO23                0x58
+               >;
+       };
+
+       pinctrl_ipu1: ipu1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x10
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x10
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x10
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x10
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x10
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x10
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x10
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x10
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x10
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x10
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x10
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x10
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x10
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x10
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x10
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x10
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x10
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x10
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x10
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x10
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x10
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18       0x10
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19       0x10
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20       0x10
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21       0x10
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22       0x10
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23       0x10
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6dl-solidsense.dts b/arch/arm/boot/dts/imx6dl-solidsense.dts
new file mode 100644 (file)
index 0000000..2a3699a
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on dt work by Russell King
+ *
+ * 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
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+#include "imx6qdl-solidsense.dtsi"
+
+/ {
+       model = "SolidRun SolidSense Solo/DualLite (1.5som+emmc)";
+       compatible = "solidrun,solidsense/dl", "fsl,imx6dl";
+};
index a685b1c..d4d5737 100644 (file)
-// SPDX-License-Identifier: (GPL-2.0+)
+// SPDX-License-Identifier: GPL-2.0+
 /*
- * Copyright (C) 2015 DH electronics GmbH
+ * Copyright (C) 2015-2021 DH electronics GmbH
  * Copyright (C) 2018 Marek Vasut <marex@denx.de>
+ *
+ * DHCOM iMX6 variant:
+ * DHCM-iMX6Q-C0800-R102-F0819-E-SD-RTC-T-HS-I-01D2
+ * DHCOM PCB number: 493-300 or newer
+ * PDK2 PCB number: 516-400 or newer
  */
-
 /dts-v1/;
 
-#include "imx6q-dhcom-som.dtsi"
+#include "imx6q.dtsi"
+#include "imx6qdl-dhcom-som.dtsi"
+#include "imx6qdl-dhcom-pdk2.dtsi"
 
 / {
-       model = "Freescale i.MX6 Quad DHCOM Premium Developer Kit (2)";
-       compatible = "dh,imx6q-dhcom-pdk2", "dh,imx6q-dhcom-som", "fsl,imx6q";
-
-       chosen {
-               stdout-path = &uart1;
-       };
-
-       clk_ext_audio_codec: clock-codec {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <24000000>;
-       };
-
-       display_bl: display-bl {
-               compatible = "pwm-backlight";
-               pwms = <&pwm1 0 50000 PWM_POLARITY_INVERTED>;
-               brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
-               default-brightness-level = <8>;
-               enable-gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
-               status = "okay";
-       };
-
-       lcd_display: disp0 {
-               compatible = "fsl,imx-parallel-display";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               interface-pix-fmt = "rgb24";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_ipu1_lcdif>;
-               status = "okay";
-
-               port@0 {
-                       reg = <0>;
-
-                       lcd_display_in: endpoint {
-                               remote-endpoint = <&ipu1_di0_disp0>;
-                       };
-               };
-
-               port@1 {
-                       reg = <1>;
-
-                       lcd_display_out: endpoint {
-                               remote-endpoint = <&lcd_panel_in>;
-                       };
-               };
-       };
-
-       panel {
-               compatible = "edt,etm0700g0edh6";
-               ddc-i2c-bus = <&i2c2>;
-               backlight = <&display_bl>;
-
-               port {
-                       lcd_panel_in: endpoint {
-                               remote-endpoint = <&lcd_display_out>;
-                       };
-               };
-       };
-
-       sound {
-               compatible = "fsl,imx-audio-sgtl5000";
-               model = "imx-sgtl5000";
-               ssi-controller = <&ssi1>;
-               audio-codec = <&sgtl5000>;
-               audio-routing =
-                       "MIC_IN", "Mic Jack",
-                       "Mic Jack", "Mic Bias",
-                       "LINE_IN", "Line In Jack",
-                       "Headphone Jack", "HP_OUT";
-               mux-int-port = <1>;
-               mux-ext-port = <3>;
-       };
-};
-
-&audmux {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_audmux_ext>;
-       status = "okay";
-};
-
-&can1 {
-       status = "okay";
-};
-
-&can2 {
-       status = "disabled";
-};
-
-&hdmi {
-       ddc-i2c-bus = <&i2c2>;
-       status = "okay";
-};
-
-&i2c2 {
-       sgtl5000: codec@a {
-               compatible = "fsl,sgtl5000";
-               reg = <0x0a>;
-               #sound-dai-cells = <0>;
-               clocks = <&clk_ext_audio_codec>;
-               VDDA-supply = <&reg_3p3v>;
-               VDDIO-supply = <&sw2_reg>;
-       };
-
-       touchscreen@38 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_touchscreen>;
-               compatible = "edt,edt-ft5406";
-               reg = <0x38>;
-               interrupt-parent = <&gpio4>;
-               interrupts = <5 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */
-       };
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_hog_base &pinctrl_hog>;
-
-       pinctrl_hog: hog-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_2__GPIO1_IO02           0x400120b0
-                       MX6QDL_PAD_GPIO_4__GPIO1_IO04           0x400120b0
-                       MX6QDL_PAD_GPIO_5__GPIO1_IO05           0x400120b0
-                       MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03       0x400120b0
-                       MX6QDL_PAD_DI0_PIN4__GPIO4_IO20         0x400120b0
-                       MX6QDL_PAD_KEY_ROW0__GPIO4_IO07         0x120b0
-                       MX6QDL_PAD_KEY_COL1__GPIO4_IO08         0x400120b0
-                       MX6QDL_PAD_NANDF_CS1__GPIO6_IO14        0x400120b0
-                       MX6QDL_PAD_NANDF_CS2__GPIO6_IO15        0x400120b0
-                       MX6QDL_PAD_KEY_ROW1__GPIO4_IO09         0x400120b0
-                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x400120b0
-                       MX6QDL_PAD_SD3_DAT4__GPIO7_IO01         0x400120b0
-                       MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21       0x400120b0
-                       MX6QDL_PAD_GPIO_18__GPIO7_IO13          0x400120b0
-                       MX6QDL_PAD_SD1_CMD__GPIO1_IO18          0x400120b0
-                       MX6QDL_PAD_SD1_DAT0__GPIO1_IO16         0x400120b0
-                       MX6QDL_PAD_SD1_DAT1__GPIO1_IO17         0x400120b0
-                       MX6QDL_PAD_SD1_DAT2__GPIO1_IO19         0x400120b0
-                       MX6QDL_PAD_SD1_CLK__GPIO1_IO20          0x400120b0
-                       MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18      0x400120b0
-                       MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19        0x400120b0
-                       MX6QDL_PAD_KEY_COL0__GPIO4_IO06         0x400120b0
-               >;
-       };
-
-       pinctrl_audmux_ext: audmux-ext-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_CSI0_DAT7__AUD3_RXD          0x130b0
-                       MX6QDL_PAD_CSI0_DAT4__AUD3_TXC          0x130b0
-                       MX6QDL_PAD_CSI0_DAT5__AUD3_TXD          0x110b0
-                       MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS         0x130b0
-               >;
-       };
-
-       pinctrl_enet_1G: enet-1G-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x100b0
-                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x100b0
-                       MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x100b0
-                       MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x100b0
-                       MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x100b0
-                       MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x100b0
-                       MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x100b0
-                       MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x100b0
-                       MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x100b0
-                       MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b0b0
-                       MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b0b0
-                       MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b0b0
-                       MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b0b0
-                       MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b0b0
-                       MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b0b0
-                       MX6QDL_PAD_EIM_D29__GPIO3_IO29          0x000b0
-                       MX6QDL_PAD_GPIO_0__GPIO1_IO00           0x000b1
-                       MX6QDL_PAD_EIM_D26__GPIO3_IO26          0x000b1
-               >;
-       };
-
-       pinctrl_ipu1_lcdif: ipu1-lcdif-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x38
-                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x38
-                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x38
-                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x38
-                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x38
-                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x38
-                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x38
-                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x38
-                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x38
-                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x38
-                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x38
-                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x38
-                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x38
-                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x38
-                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x38
-                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x38
-                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x38
-                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x38
-                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x38
-                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x38
-                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x38
-                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x38
-                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18       0x38
-                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19       0x38
-                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20       0x38
-                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21       0x38
-                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22       0x38
-                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23       0x38
-                       MX6QDL_PAD_EIM_D27__GPIO3_IO27                  0x120b0
-               >;
-       };
-
-       pinctrl_pwm1: pwm1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_SD1_DAT3__PWM1_OUT           0x1b0b1
-               >;
-       };
-
-       pinctrl_touchscreen: touchscreen-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_19__GPIO4_IO05          0x1b0b1
-               >;
-       };
-
-       pinctrl_pcie: pcie-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20     0x1b0b1
-               >;
-       };
-};
-
-&ipu1_di0_disp0 {
-       remote-endpoint = <&lcd_display_in>;
-};
-
-&pcie {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_pcie>;
-       reset-gpio = <&gpio6 14 GPIO_ACTIVE_LOW>;
-       status = "okay";
-};
-
-&pwm1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_pwm1>;
-       status = "okay";
-};
-
-&ssi1 {
-       status = "okay";
+       model = "DH electronics i.MX6Q DHCOM on Premium Developer Kit (2)";
+       compatible = "dh,imx6q-dhcom-pdk2", "dh,imx6q-dhcom-som",
+                    "fsl,imx6q";
 };
 
 &sata {
        status = "okay";
 };
-
-&usdhc3 {
-       status = "okay";
-};
diff --git a/arch/arm/boot/dts/imx6q-dhcom-som.dtsi b/arch/arm/boot/dts/imx6q-dhcom-som.dtsi
deleted file mode 100644 (file)
index 4bf51f3..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+)
-/*
- * Copyright (C) 2015 DH electronics GmbH
- * Copyright (C) 2018 Marek Vasut <marex@denx.de>
- */
-
-#include "imx6q.dtsi"
-#include <dt-bindings/pwm/pwm.h>
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/clock/imx6qdl-clock.h>
-#include <dt-bindings/input/input.h>
-
-/ {
-       aliases {
-               i2c0 = &i2c2;
-               i2c1 = &i2c1;
-               i2c2 = &i2c3;
-               mmc0 = &usdhc2;
-               mmc1 = &usdhc3;
-               mmc2 = &usdhc4;
-               mmc3 = &usdhc1;
-               rtc0 = &rtc_i2c;
-               rtc1 = &snvs_rtc;
-               serial0 = &uart1;
-               serial1 = &uart5;
-               serial2 = &uart4;
-               serial3 = &uart2;
-               serial4 = &uart3;
-       };
-
-       memory@10000000 {
-               device_type = "memory";
-               reg = <0x10000000 0x40000000>;
-       };
-
-       reg_eth_vio: regulator-eth-vio {
-               compatible = "regulator-fixed";
-               gpio = <&gpio1 7 GPIO_ACTIVE_LOW>;
-               pinctrl-0 = <&pinctrl_enet_vio>;
-               pinctrl-names = "default";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-name = "eth_vio";
-               vin-supply = <&sw2_reg>;
-       };
-
-       reg_usb_otg_vbus: regulator-usb-otg-vbus {
-               compatible = "regulator-fixed";
-               regulator-name = "usb_otg_vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-       };
-
-       reg_usb_h1_vbus: regulator-usb-h1-vbus {
-               compatible = "regulator-fixed";
-               regulator-name = "usb_h1_vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-       };
-
-       reg_3p3v: regulator-3P3V {
-               compatible = "regulator-fixed";
-               regulator-name = "3P3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-always-on;
-       };
-};
-
-&can1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan1>;
-};
-
-&can2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_flexcan2>;
-};
-
-&ecspi1 {
-       cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>, <&gpio4 11 GPIO_ACTIVE_LOW>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi1>;
-       status = "okay";
-
-       flash@0 {       /* S25FL116K */
-               #address-cells = <1>;
-               #size-cells = <1>;
-               compatible = "jedec,spi-nor";
-               spi-max-frequency = <50000000>;
-               reg = <0>;
-               m25p,fast-read;
-       };
-};
-
-&ecspi2 {
-       cs-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ecspi2>;
-       status = "okay";
-};
-
-&fec {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet_100M>;
-       phy-mode = "rmii";
-       phy-handle = <&ethphy0>;
-       status = "okay";
-
-       mdio {
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               ethphy0: ethernet-phy@0 {       /* SMSC LAN8710Ai */
-                       reg = <0>;
-                       max-speed = <100>;
-                       reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
-                       reset-assert-us = <1000>;
-                       reset-deassert-us = <1000>;
-                       smsc,disable-energy-detect; /* Make plugin detection reliable */
-               };
-       };
-};
-
-&i2c1 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default", "gpio";
-       pinctrl-0 = <&pinctrl_i2c1>;
-       pinctrl-1 = <&pinctrl_i2c1_gpio>;
-       scl-gpios = <&gpio3 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-       sda-gpios = <&gpio3 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
-       status = "okay";
-};
-
-&i2c2 {
-       clock-frequency = <100000>;
-       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";
-};
-
-&i2c3 {
-       clock-frequency = <100000>;
-       pinctrl-names = "default", "gpio";
-       pinctrl-0 = <&pinctrl_i2c3>;
-       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 = "okay";
-
-       ltc3676: pmic@3c {
-               compatible = "lltc,ltc3676";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_pmic_hw300>;
-               reg = <0x3c>;
-               interrupt-parent = <&gpio5>;
-               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
-
-               regulators {
-                       sw1_reg: sw1 {
-                               regulator-min-microvolt = <787500>;
-                               regulator-max-microvolt = <1527272>;
-                               lltc,fb-voltage-divider = <100000 110000>;
-                               regulator-suspend-mem-microvolt = <1040000>;
-                               regulator-ramp-delay = <7000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-
-                       sw2_reg: sw2 {
-                               regulator-min-microvolt = <1885714>;
-                               regulator-max-microvolt = <3657142>;
-                               lltc,fb-voltage-divider = <100000 28000>;
-                               regulator-ramp-delay = <7000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-
-                       sw3_reg: sw3 {
-                               regulator-min-microvolt = <787500>;
-                               regulator-max-microvolt = <1527272>;
-                               lltc,fb-voltage-divider = <100000 110000>;
-                               regulator-suspend-mem-microvolt = <980000>;
-                               regulator-ramp-delay = <7000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-
-                       sw4_reg: sw4 {
-                               regulator-min-microvolt = <855571>;
-                               regulator-max-microvolt = <1659291>;
-                               lltc,fb-voltage-divider = <100000 93100>;
-                               regulator-ramp-delay = <7000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-
-                       ldo1_reg: ldo1 {
-                               regulator-min-microvolt = <3240306>;
-                               regulator-max-microvolt = <3240306>;
-                               lltc,fb-voltage-divider = <102000 29400>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-
-                       ldo2_reg: ldo2 {
-                               regulator-min-microvolt = <2484708>;
-                               regulator-max-microvolt = <2484708>;
-                               lltc,fb-voltage-divider = <100000 41200>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-               };
-       };
-
-       touchscreen@49 {        /* TSC2004 */
-               compatible = "ti,tsc2004";
-               reg = <0x49>;
-               vio-supply = <&reg_3p3v>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_tsc2004_hw300>;
-               interrupts-extended = <&gpio4 14 IRQ_TYPE_EDGE_FALLING>;
-               status = "disabled";
-       };
-
-       eeprom@50 {
-               compatible = "atmel,24c02";
-               reg = <0x50>;
-               pagesize = <16>;
-       };
-
-       rtc_i2c: rtc@56 {
-               compatible = "microcrystal,rv3029";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_rtc_hw300>;
-               reg = <0x56>;
-               interrupt-parent = <&gpio7>;
-               interrupts = <12 2>;
-       };
-};
-
-&iomuxc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_hog_base>;
-
-       pinctrl_hog_base: hog-base-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_A19__GPIO2_IO19          0x120b0
-                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x120b0
-                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x120b0
-                       MX6QDL_PAD_EIM_A16__GPIO2_IO22          0x120b0
-                       MX6QDL_PAD_EIM_A17__GPIO2_IO21          0x120b0
-               >;
-       };
-
-       pinctrl_ecspi1: ecspi1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x100b1
-                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI         0x100b1
-                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK         0x100b1
-                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30          0x1b0b0
-                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11         0x1b0b0
-               >;
-       };
-
-       pinctrl_ecspi2: ecspi2-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO      0x100b1
-                       MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI       0x100b1
-                       MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK       0x100b1
-                       MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29       0x1b0b0
-               >;
-       };
-
-       pinctrl_enet_100M: enet-100M-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
-                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
-                       MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
-                       MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER       0x1b0b0
-                       MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0     0x1b0b0
-                       MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1     0x1b0b0
-                       MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN       0x1b0b0
-                       MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0     0x1b0b0
-                       MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1     0x1b0b0
-                       MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0a8
-                       MX6QDL_PAD_EIM_WAIT__GPIO5_IO00         0x000b0
-                       MX6QDL_PAD_KEY_ROW4__GPIO4_IO15         0x000b1
-               >;
-       };
-
-       pinctrl_enet_vio: enet-vio-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_7__GPIO1_IO07           0x120b0
-               >;
-       };
-
-       pinctrl_flexcan1: flexcan1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX        0x1b0b0
-                       MX6QDL_PAD_GPIO_8__FLEXCAN1_RX          0x1b0b0
-               >;
-       };
-
-       pinctrl_flexcan2: flexcan2-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX        0x1b0b0
-                       MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX        0x1b0b0
-               >;
-       };
-
-       pinctrl_i2c1: i2c1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
-                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
-               >;
-       };
-
-       pinctrl_i2c1_gpio: i2c1-gpio-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_D21__GPIO3_IO21          0x4001b8b1
-                       MX6QDL_PAD_EIM_D28__GPIO3_IO28          0x4001b8b1
-               >;
-       };
-
-       pinctrl_i2c2: i2c2-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_KEY_COL3__I2C2_SCL           0x4001b8b1
-                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001b8b1
-               >;
-       };
-
-       pinctrl_i2c2_gpio: i2c2-gpio-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_KEY_COL3__GPIO4_IO12         0x4001b8b1
-                       MX6QDL_PAD_KEY_ROW3__GPIO4_IO13         0x4001b8b1
-               >;
-       };
-
-       pinctrl_i2c3: i2c3-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_3__I2C3_SCL             0x4001b8b1
-                       MX6QDL_PAD_GPIO_6__I2C3_SDA             0x4001b8b1
-               >;
-       };
-
-       pinctrl_i2c3_gpio: i2c3-gpio-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_3__GPIO1_IO03           0x4001b8b1
-                       MX6QDL_PAD_GPIO_6__GPIO1_IO06           0x4001b8b1
-               >;
-       };
-
-       pinctrl_pmic_hw300: pmic-hw300-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_A25__GPIO5_IO02          0x1B0B0
-               >;
-       };
-
-       pinctrl_rtc_hw300: rtc-hw300-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_17__GPIO7_IO12          0x120B0
-               >;
-       };
-
-       pinctrl_tsc2004_hw300: tsc2004-hw300-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_KEY_COL4__GPIO4_IO14         0x120B0
-               >;
-       };
-
-       pinctrl_uart1: uart1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA      0x1b0b1
-                       MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA      0x1b0b1
-                       MX6QDL_PAD_EIM_D20__UART1_RTS_B         0x1b0b1
-                       MX6QDL_PAD_EIM_D19__UART1_CTS_B         0x4001b0b1
-                       MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x4001b0b1
-                       MX6QDL_PAD_EIM_D24__GPIO3_IO24          0x4001b0b1
-                       MX6QDL_PAD_EIM_D25__GPIO3_IO25          0x4001b0b1
-                       MX6QDL_PAD_EIM_EB3__GPIO2_IO31          0x4001b0b1
-               >;
-       };
-
-       pinctrl_uart4: uart4-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA    0x1b0b1
-                       MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA    0x1b0b1
-               >;
-       };
-
-       pinctrl_uart5: uart5-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA    0x1b0b1
-                       MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA    0x1b0b1
-                       MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B      0x1b0b1
-                       MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B      0x4001b0b1
-               >;
-       };
-
-       pinctrl_usbh1: usbh1-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x120B0
-               >;
-       };
-
-       pinctrl_usbotg: usbotg-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
-               >;
-       };
-
-       pinctrl_usdhc2: usdhc2-grp {
-               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
-                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x120B0
-               >;
-       };
-
-       pinctrl_usdhc3: usdhc3-grp {
-               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_RST__GPIO7_IO08          0x120B0
-               >;
-       };
-
-       pinctrl_usdhc4: usdhc4-grp {
-               fsl,pins = <
-                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x17059
-                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x10059
-                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x17059
-                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x17059
-                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x17059
-                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x17059
-                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4          0x17059
-                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5          0x17059
-                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6          0x17059
-                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7          0x17059
-               >;
-       };
-};
-
-&reg_arm {
-       vin-supply = <&sw3_reg>;
-};
-
-&reg_soc {
-       vin-supply = <&sw1_reg>;
-};
-
-&reg_pu {
-       vin-supply = <&sw1_reg>;
-};
-
-&reg_vdd1p1 {
-       vin-supply = <&sw2_reg>;
-};
-
-&reg_vdd2p5 {
-       vin-supply = <&sw2_reg>;
-};
-
-&uart1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart1>;
-       uart-has-rtscts;
-       dtr-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
-       dsr-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
-       dcd-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
-       rng-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>;
-       status = "okay";
-};
-
-&uart4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart4>;
-       status = "okay";
-};
-
-&uart5 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart5>;
-       uart-has-rtscts;
-       status = "okay";
-};
-
-&usbh1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usbh1>;
-       vbus-supply = <&reg_usb_h1_vbus>;
-       dr_mode = "host";
-       status = "okay";
-};
-
-&usbotg {
-       vbus-supply = <&reg_usb_otg_vbus>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usbotg>;
-       disable-over-current;
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&usdhc2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc2>;
-       cd-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
-       keep-power-in-suspend;
-       status = "okay";
-};
-
-&usdhc3 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc3>;
-       cd-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>;
-       fsl,wp-controller;
-       keep-power-in-suspend;
-       status = "disabled";
-};
-
-&usdhc4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usdhc4>;
-       non-removable;
-       bus-width = <8>;
-       no-1-8-v;
-       keep-power-in-suspend;
-       status = "okay";
-};
diff --git a/arch/arm/boot/dts/imx6q-skov-revc-lt2.dts b/arch/arm/boot/dts/imx6q-skov-revc-lt2.dts
new file mode 100644 (file)
index 0000000..f00add7
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+/dts-v1/;
+#include "imx6q.dtsi"
+#include "imx6qdl-skov-cpu.dtsi"
+#include "imx6qdl-skov-cpu-revc.dtsi"
+
+/ {
+       model = "SKOV IMX6 CPU QuadCore";
+       compatible = "skov,imx6q-skov-revc-lt2", "fsl,imx6q";
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL           0x4001f878
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001f878
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6q-skov-revc-lt6.dts b/arch/arm/boot/dts/imx6q-skov-revc-lt6.dts
new file mode 100644 (file)
index 0000000..3e3b36a
--- /dev/null
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+/dts-v1/;
+#include "imx6q.dtsi"
+#include "imx6qdl-skov-cpu.dtsi"
+#include "imx6qdl-skov-cpu-revc.dtsi"
+
+/ {
+       model = "SKOV IMX6 CPU QuadCore";
+       compatible = "skov,imx6q-skov-revc-lt6", "fsl,imx6q";
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight>;
+               enable-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
+               pwms = <&pwm2 0 20000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <17>;
+               default-brightness-level = <8>;
+               power-supply = <&reg_24v0>;
+       };
+
+       display {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               compatible = "fsl,imx-parallel-display";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ipu1>;
+
+               port@0 {
+                       reg = <0>;
+
+                       display0_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       display0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+
+       panel {
+               compatible = "logictechno,lttd800480070-l6wh-rt";
+               backlight = <&backlight>;
+               power-supply = <&reg_3v3>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&display0_out>;
+                       };
+               };
+       };
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&display0_in>;
+};
+
+&iomuxc {
+       pinctrl_backlight: backlightgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_RGMII_TD3__GPIO6_IO23                0x58
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL           0x4001F878
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001F878
+               >;
+       };
+
+       pinctrl_ipu1: ipu1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x10
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x10
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x10
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x10
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x10
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x10
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x10
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x10
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x10
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x10
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x10
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x10
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x10
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x10
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x10
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x10
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x10
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x10
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x10
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x10
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x10
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x10
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18       0x10
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19       0x10
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20       0x10
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21       0x10
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22       0x10
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23       0x10
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6q-skov-reve-mi1010ait-1cp1.dts b/arch/arm/boot/dts/imx6q-skov-reve-mi1010ait-1cp1.dts
new file mode 100644 (file)
index 0000000..7f1f19b
--- /dev/null
@@ -0,0 +1,127 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+/dts-v1/;
+#include "imx6q.dtsi"
+#include "imx6qdl-skov-cpu.dtsi"
+
+/ {
+       model = "SKOV IMX6 CPU QuadCore";
+       compatible = "skov,imx6q-skov-reve-mi1010ait-1cp1", "fsl,imx6q";
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight>;
+               enable-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
+               pwms = <&pwm2 0 20000 0>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <17>;
+               default-brightness-level = <8>;
+               power-supply = <&reg_24v0>;
+       };
+
+       panel {
+               compatible = "multi-inno,mi1010ait-1cp";
+               backlight = <&backlight>;
+               power-supply = <&reg_3v3>;
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
+                                <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>;
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       clock-frequency = <100000>;
+       status = "okay";
+
+       touchscreen@38 {
+               compatible = "edt,edt-ft5406";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touchscreen>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <19 IRQ_TYPE_EDGE_FALLING>;
+               reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+               touchscreen-size-x = <1280>;
+               touchscreen-size-y = <800>;
+               wakeup-source;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               status = "okay";
+
+               port@4 {
+                       reg = <4>;
+
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in>;
+                       };
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_backlight: backlightgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_RGMII_TD3__GPIO6_IO23                0x58
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       /* external 1 k pull up */
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x40010878
+                       /* external 1 k pull up */
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x40010878
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL           0x4001F878
+                       /* internal 22 k pull up required */
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001F878
+               >;
+       };
+
+       pinctrl_touchscreen: touchscreengrp {
+               fsl,pins = <
+                       /* external 10 k pull up */
+                       /* CTP_INT */
+                       MX6QDL_PAD_EIM_D19__GPIO3_IO19          0x1b0b0
+                       /* CTP_RST */
+                       MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x1b0b0
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6q-solidsense.dts b/arch/arm/boot/dts/imx6q-solidsense.dts
new file mode 100644 (file)
index 0000000..0e6a325
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
+ * Based on dt work by Russell King
+ *
+ * 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
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+
+#include "imx6q.dtsi"
+#include "imx6qdl-sr-som.dtsi"
+#include "imx6qdl-sr-som-emmc.dtsi"
+#include "imx6qdl-sr-som-ti.dtsi"
+#include "imx6qdl-hummingboard2.dtsi"
+#include "imx6qdl-solidsense.dtsi"
+
+/ {
+       model = "SolidRun SolidSense Dual/Quad (1.5som+emmc)";
+       compatible = "solidrun,solidsense/q", "fsl,imx6q";
+};
diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-drc02.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-drc02.dtsi
new file mode 100644 (file)
index 0000000..3d0a50a
--- /dev/null
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2021 DH electronics GmbH
+ */
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+/*
+ * Special SoM hardware required which uses the pins from micro SD card. The
+ * pins SD3_DAT0 and SD3_DAT1 are muxed as can2 Tx and Rx. The signals for can2
+ * Tx and Rx are routed to the DHCOM UART1 rts/cts pins. Therefore the micro SD
+ * card must be disabled and the uart1 rts/cts must be output on other DHCOM
+ * pins, see uart1 and usdhc3 node below.
+ */
+&can2 {
+       status = "okay";
+};
+
+&gpio1 {
+       /*
+        * NOTE: On DRC02, the RS485_RX_En is controlled by a separate
+        * GPIO line, however the i.MX6 UART driver assumes RX happens
+        * during TX anyway and that it only controls drive enable DE
+        * line. Hence, the RX is always enabled here.
+        */
+       rs485-rx-en-hog {
+               gpio-hog;
+               gpios = <18 0>; /* GPIO Q */
+               line-name = "rs485-rx-en";
+               output-low;
+       };
+};
+
+&gpio3 {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "DRC02-In1", "", "", "", "";
+};
+
+&gpio4 {
+       gpio-line-names =
+               "", "", "", "", "", "DHCOM-E", "DRC02-In2", "DHCOM-H",
+               "DHCOM-I", "DRC02-HW0", "", "", "", "", "", "",
+               "", "", "", "", "DRC02-Out1", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio6 {
+       gpio-line-names =
+               "", "", "", "DRC02-Out2", "", "", "SOM-HW1", "",
+               "", "", "", "", "", "", "DRC02-HW2", "DRC02-HW1",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&i2c1 {
+       eeprom@50 {
+               compatible = "atmel,24c04";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+};
+
+&uart1 {
+       /*
+        * Due to the use of can2 the signals for can2 Tx and Rx are routed to
+        * DHCOM UART1 rts/cts pins. Therefore this UART have to use DHCOM GPIOs
+        * for rts/cts. So configure DHCOM GPIO I as rts and GPIO M as cts.
+        */
+       /delete-property/ uart-has-rtscts;
+       cts-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>; /* GPIO M */
+       pinctrl-0 = <&pinctrl_uart1 &pinctrl_dhcom_i &pinctrl_dhcom_m>;
+       pinctrl-names = "default";
+       rts-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* GPIO I */
+};
+
+&uart5 {
+       /*
+        * On DRC02 this UART is used as RS485 interface and RS485_TX_En is
+        * controlled by DHCOM GPIO P. So remove rts/cts pins and the property
+        * uart-has-rtscts from this UART and add the DHCOM GPIO P pin via
+        * rts-gpios. The RS485_RX_En is controlled by DHCOM GPIO Q, see gpio1
+        * node above.
+        */
+       /delete-property/ uart-has-rtscts;
+       linux,rs485-enabled-at-boot-time;
+       pinctrl-0 = <&pinctrl_uart5_core &pinctrl_dhcom_p &pinctrl_dhcom_q>;
+       pinctrl-names = "default";
+       rts-gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>; /* GPIO P */
+};
+
+&usdhc2 { /* SD card */
+       status = "okay";
+};
+
+&usdhc3 {
+       /*
+        * Due to the use of can2 the micro SD card on module have to be
+        * disabled, because the pins SD3_DAT0 and SD3_DAT1 are muxed as
+        * can2 Tx and Rx.
+        */
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl-0 = <
+                       /*
+                        * The following DHCOM GPIOs are used on this board.
+                        * Therefore, they have been removed from the list below.
+                        * I: uart1 rts
+                        * M: uart1 cts
+                        * P: uart5 rs485-tx-en
+                        * Q: uart5 rs485-rx-en
+                        */
+                       &pinctrl_hog_base
+                       &pinctrl_dhcom_a &pinctrl_dhcom_b &pinctrl_dhcom_c
+                       &pinctrl_dhcom_d &pinctrl_dhcom_e &pinctrl_dhcom_f
+                       &pinctrl_dhcom_g &pinctrl_dhcom_h
+                       &pinctrl_dhcom_j &pinctrl_dhcom_k &pinctrl_dhcom_l
+                       &pinctrl_dhcom_n &pinctrl_dhcom_o
+                       &pinctrl_dhcom_r
+                       &pinctrl_dhcom_s &pinctrl_dhcom_t &pinctrl_dhcom_u
+                       &pinctrl_dhcom_v &pinctrl_dhcom_w &pinctrl_dhcom_int
+               >;
+       pinctrl-names = "default";
+
+       pinctrl_uart5_core: uart5-core-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA    0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA    0x1b0b1
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-pdk2.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-pdk2.dtsi
new file mode 100644 (file)
index 0000000..dc21853
--- /dev/null
@@ -0,0 +1,361 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2015-2021 DH electronics GmbH
+ * Copyright (C) 2018 Marek Vasut <marex@denx.de>
+ */
+
+#include <dt-bindings/leds/common.h>
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       clk_ext_audio_codec: clock-codec {
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               compatible = "fixed-clock";
+       };
+
+       display_bl: display-bl {
+               brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
+               compatible = "pwm-backlight";
+               default-brightness-level = <8>;
+               enable-gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>; /* GPIO G */
+               pwms = <&pwm1 0 50000 PWM_POLARITY_INVERTED>;
+               status = "okay";
+       };
+
+       lcd_display: disp0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "fsl,imx-parallel-display";
+               interface-pix-fmt = "rgb24";
+               pinctrl-0 = <&pinctrl_ipu1_lcdif &pinctrl_dhcom_g>;
+               pinctrl-names = "default";
+               status = "okay";
+
+               port@0 {
+                       reg = <0>;
+
+                       lcd_display_in: endpoint {
+                               remote-endpoint = <&ipu1_di0_disp0>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       lcd_display_out: endpoint {
+                               remote-endpoint = <&lcd_panel_in>;
+                       };
+               };
+       };
+
+       gpio-keys {
+               #size-cells = <0>;
+               compatible = "gpio-keys";
+
+               button-0 {
+                       gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; /* GPIO A */
+                       label = "TA1-GPIO-A";
+                       linux,code = <KEY_A>;
+                       pinctrl-0 = <&pinctrl_dhcom_a>;
+                       pinctrl-names = "default";
+                       wakeup-source;
+               };
+
+               button-1 {
+                       gpios = <&gpio1 4 GPIO_ACTIVE_LOW>; /* GPIO B */
+                       label = "TA2-GPIO-B";
+                       linux,code = <KEY_B>;
+                       pinctrl-0 = <&pinctrl_dhcom_b>;
+                       pinctrl-names = "default";
+                       wakeup-source;
+               };
+
+               button-2 {
+                       gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; /* GPIO C */
+                       label = "TA3-GPIO-C";
+                       linux,code = <KEY_C>;
+                       pinctrl-0 = <&pinctrl_dhcom_c>;
+                       pinctrl-names = "default";
+                       wakeup-source;
+               };
+
+               button-3 {
+                       gpios = <&gpio6 3 GPIO_ACTIVE_LOW>; /* GPIO D */
+                       label = "TA4-GPIO-D";
+                       linux,code = <KEY_D>;
+                       pinctrl-0 = <&pinctrl_dhcom_d>;
+                       pinctrl-names = "default";
+                       wakeup-source;
+               };
+       };
+
+       led {
+               compatible = "gpio-leds";
+
+               /*
+                * Disable led-5, because GPIO E is
+                * already used as touch interrupt.
+                */
+               led-5 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_INDICATOR;
+                       gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>; /* GPIO E */
+                       pinctrl-0 = <&pinctrl_dhcom_e>;
+                       pinctrl-names = "default";
+                       status = "disabled";
+               };
+
+               led-6 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_INDICATOR;
+                       gpios = <&gpio4 20 GPIO_ACTIVE_HIGH>; /* GPIO F */
+                       pinctrl-0 = <&pinctrl_dhcom_f>;
+                       pinctrl-names = "default";
+               };
+
+               led-7 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_INDICATOR;
+                       gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>; /* GPIO H */
+                       pinctrl-0 = <&pinctrl_dhcom_h>;
+                       pinctrl-names = "default";
+               };
+
+               led-8 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_INDICATOR;
+                       gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* GPIO I */
+                       pinctrl-0 = <&pinctrl_dhcom_i>;
+                       pinctrl-names = "default";
+               };
+       };
+
+       panel {
+               backlight = <&display_bl>;
+               compatible = "edt,etm0700g0edh6";
+
+               port {
+                       lcd_panel_in: endpoint {
+                               remote-endpoint = <&lcd_display_out>;
+                       };
+               };
+       };
+
+       sound {
+               audio-codec = <&sgtl5000>;
+               audio-routing =
+                       "MIC_IN", "Mic Jack",
+                       "Mic Jack", "Mic Bias",
+                       "LINE_IN", "Line In Jack",
+                       "Headphone Jack", "HP_OUT";
+               compatible = "fsl,imx-audio-sgtl5000";
+               model = "imx-sgtl5000";
+               mux-ext-port = <3>;
+               mux-int-port = <1>;
+               ssi-controller = <&ssi1>;
+       };
+};
+
+&audmux {
+       pinctrl-0 = <&pinctrl_audmux_ext>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&can1 {
+       status = "okay";
+};
+
+&can2 {
+       status = "disabled";
+};
+
+/* 1G ethernet */
+/delete-node/ &ethphy0;
+&fec {
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy7>;
+       pinctrl-0 = <&pinctrl_enet_1G>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy7: ethernet-phy@7 { /* KSZ 9021 */
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+                       pinctrl-0 = <&pinctrl_ethphy7>;
+                       pinctrl-names = "default";
+                       reg = <7>;
+                       reset-assert-us = <1000>;
+                       reset-deassert-us = <1000>;
+                       reset-gpios = <&gpio3 29 GPIO_ACTIVE_LOW>;
+                       rxc-skew-ps = <3000>;
+                       rxd0-skew-ps = <0>;
+                       rxd1-skew-ps = <0>;
+                       rxd2-skew-ps = <0>;
+                       rxd3-skew-ps = <0>;
+                       rxdv-skew-ps = <0>;
+                       txc-skew-ps = <3000>;
+                       txd0-skew-ps = <0>;
+                       txd1-skew-ps = <0>;
+                       txd2-skew-ps = <0>;
+                       txd3-skew-ps = <0>;
+                       txen-skew-ps = <0>;
+               };
+       };
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c2>;
+       status = "okay";
+};
+
+&i2c2 {
+       sgtl5000: codec@a {
+               #sound-dai-cells = <0>;
+               clocks = <&clk_ext_audio_codec>;
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               VDDA-supply = <&reg_3p3v>;
+               VDDIO-supply = <&sw2_reg>;
+       };
+
+       touchscreen@38 {
+               compatible = "edt,edt-ft5406";
+               interrupt-parent = <&gpio4>;
+               interrupts = <5 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */
+               pinctrl-0 = <&pinctrl_dhcom_e>;
+               pinctrl-names = "default";
+               reg = <0x38>;
+       };
+};
+
+&ipu1_di0_disp0 {
+       remote-endpoint = <&lcd_display_in>;
+};
+
+&pcie {
+       pinctrl-0 = <&pinctrl_pcie &pinctrl_dhcom_j>;
+       reset-gpio = <&gpio6 14 GPIO_ACTIVE_LOW>; /* GPIO J */
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&ssi1 {
+       status = "okay";
+};
+
+&usdhc2 { /* SD card */
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-0 = <
+                       /*
+                        * The following DHCOM GPIOs are used on this board.
+                        * Therefore, they have been removed from the list below.
+                        * A: key TA1
+                        * B: key TA2
+                        * C: key TA3
+                        * D: key TA4
+                        * E: touchscreen
+                        * F: led6
+                        * G: backlight enable
+                        * H: led7
+                        * I: led8
+                        * J: PCIe reset
+                        */
+                       &pinctrl_hog_base
+                       &pinctrl_dhcom_k &pinctrl_dhcom_l
+                       &pinctrl_dhcom_m &pinctrl_dhcom_n &pinctrl_dhcom_o
+                       &pinctrl_dhcom_p &pinctrl_dhcom_q &pinctrl_dhcom_r
+                       &pinctrl_dhcom_s &pinctrl_dhcom_t &pinctrl_dhcom_u
+                       &pinctrl_dhcom_v &pinctrl_dhcom_w &pinctrl_dhcom_int
+               >;
+       pinctrl-names = "default";
+
+       pinctrl_audmux_ext: audmux-ext-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT4__AUD3_TXC          0x130b0
+                       MX6QDL_PAD_CSI0_DAT5__AUD3_TXD          0x110b0
+                       MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS         0x130b0
+                       MX6QDL_PAD_CSI0_DAT7__AUD3_RXD          0x130b0
+               >;
+       };
+
+       pinctrl_enet_1G: enet-1G-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x100b0
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x100b0
+                       MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK    0x100b0
+                       MX6QDL_PAD_RGMII_RD0__RGMII_RD0         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD1__RGMII_RD1         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD2__RGMII_RD2         0x1b0b0
+                       MX6QDL_PAD_RGMII_RD3__RGMII_RD3         0x1b0b0
+                       MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL   0x1b0b0
+                       MX6QDL_PAD_RGMII_RXC__RGMII_RXC         0x1b0b0
+                       MX6QDL_PAD_RGMII_TD0__RGMII_TD0         0x100b0
+                       MX6QDL_PAD_RGMII_TD1__RGMII_TD1         0x100b0
+                       MX6QDL_PAD_RGMII_TD2__RGMII_TD2         0x100b0
+                       MX6QDL_PAD_RGMII_TD3__RGMII_TD3         0x100b0
+                       MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL   0x100b0
+                       MX6QDL_PAD_RGMII_TXC__RGMII_TXC         0x100b0
+               >;
+       };
+
+       pinctrl_ethphy7: ethphy7-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D26__GPIO3_IO26          0xb1 /* WOL */
+                       MX6QDL_PAD_EIM_D29__GPIO3_IO29          0xb0 /* Reset */
+                       MX6QDL_PAD_GPIO_0__GPIO1_IO00           0xb1 /* Int */
+               >;
+       };
+
+       pinctrl_ipu1_lcdif: ipu1-lcdif-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK      0x38
+                       MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02             0x38
+                       MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03             0x38
+                       MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15            0x38
+                       MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00        0x38
+                       MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01        0x38
+                       MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02        0x38
+                       MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03        0x38
+                       MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04        0x38
+                       MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05        0x38
+                       MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06        0x38
+                       MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07        0x38
+                       MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08        0x38
+                       MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09        0x38
+                       MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10       0x38
+                       MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11       0x38
+                       MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12       0x38
+                       MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13       0x38
+                       MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14       0x38
+                       MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15       0x38
+                       MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16       0x38
+                       MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17       0x38
+                       MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18       0x38
+                       MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19       0x38
+                       MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20       0x38
+                       MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21       0x38
+                       MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22       0x38
+                       MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23       0x38
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-picoitx.dtsi
new file mode 100644 (file)
index 0000000..4cd4cb9
--- /dev/null
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2021 DH electronics GmbH
+ */
+
+#include <dt-bindings/leds/common.h>
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       led {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       color = <LED_COLOR_ID_YELLOW>;
+                       default-state = "off";
+                       function = LED_FUNCTION_INDICATOR;
+                       gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* GPIO I */
+                       pinctrl-0 = <&pinctrl_dhcom_i>;
+                       pinctrl-names = "default";
+               };
+       };
+};
+
+&gpio1 {
+       gpio-line-names =
+               "", "", "DHCOM-A", "", "DHCOM-B", "PicoITX-In2", "", "",
+               "", "", "", "", "", "", "", "",
+               "DHCOM-R", "DHCOM-S", "DHCOM-Q", "DHCOM-T", "DHCOM-U", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio4 {
+       gpio-line-names =
+               "", "", "", "", "", "PicoITX-In1", "DHCOM-INT", "DHCOM-H",
+               "DHCOM-I", "PicoITX-HW2", "", "", "", "", "", "",
+               "", "", "", "", "PicoITX-Out1", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio6 {
+       gpio-line-names =
+               "", "", "", "PicoITX-Out2", "", "", "SOM-HW1", "",
+               "", "", "", "", "", "", "PicoITX-HW0", "PicoITX-HW1",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&iomuxc {
+       pinctrl-0 = <
+                       /*
+                        * The following DHCOM GPIOs are used on this board.
+                        * Therefore, they have been removed from the list below.
+                        * I: yellow led
+                        */
+                       &pinctrl_hog_base
+                       &pinctrl_dhcom_a &pinctrl_dhcom_b &pinctrl_dhcom_c
+                       &pinctrl_dhcom_d &pinctrl_dhcom_e &pinctrl_dhcom_f
+                       &pinctrl_dhcom_g &pinctrl_dhcom_h
+                       &pinctrl_dhcom_j &pinctrl_dhcom_k &pinctrl_dhcom_l
+                       &pinctrl_dhcom_m &pinctrl_dhcom_n &pinctrl_dhcom_o
+                       &pinctrl_dhcom_p &pinctrl_dhcom_q &pinctrl_dhcom_r
+                       &pinctrl_dhcom_s &pinctrl_dhcom_t &pinctrl_dhcom_u
+                       &pinctrl_dhcom_v &pinctrl_dhcom_w &pinctrl_dhcom_int
+               >;
+       pinctrl-names = "default";
+};
diff --git a/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi b/arch/arm/boot/dts/imx6qdl-dhcom-som.dtsi
new file mode 100644 (file)
index 0000000..5d10c40
--- /dev/null
@@ -0,0 +1,815 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2015-2021 DH electronics GmbH
+ * Copyright (C) 2018 Marek Vasut <marex@denx.de>
+ */
+
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx6qdl-clock.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               i2c0 = &i2c2;
+               i2c1 = &i2c1;
+               i2c2 = &i2c3;
+               mmc0 = &usdhc2;
+               mmc1 = &usdhc3;
+               mmc2 = &usdhc4;
+               mmc3 = &usdhc1;
+               rtc0 = &rtc_i2c;
+               rtc1 = &snvs_rtc;
+               serial0 = &uart1;
+               serial1 = &uart5;
+               serial2 = &uart4;
+               serial3 = &uart2;
+               serial4 = &uart3;
+       };
+
+       memory@10000000 { /* Appropriate memory size will be filled by U-Boot */
+               device_type = "memory";
+               reg = <0x10000000 0x20000000>;
+       };
+
+       reg_3p3v: regulator-3P3V {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "3P3V";
+       };
+
+       reg_eth_vio: regulator-eth-vio {
+               compatible = "regulator-fixed";
+               gpio = <&gpio1 7 0>;
+               pinctrl-0 = <&pinctrl_enet_vio>;
+               pinctrl-names = "default";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-name = "eth_vio";
+               vin-supply = <&sw2_reg>;
+       };
+
+       /* OE pin of the latch is low active */
+       reg_latch_oe_on: regulator-latch-oe-on {
+               compatible = "regulator-fixed";
+               gpio = <&gpio3 22 0>;
+               regulator-always-on;
+               regulator-name = "latch_oe_on";
+       };
+
+       reg_usb_h1_vbus: regulator-usb-h1-vbus {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio3 31 0>;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "usb_h1_vbus";
+       };
+
+       reg_usb_otg_vbus: regulator-usb-otg-vbus {
+               compatible = "regulator-fixed";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-name = "usb_otg_vbus";
+       };
+};
+
+&can1 {
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/*
+ * Special SoM hardware required which uses the pins from micro SD card. The
+ * pins SD3_DAT0 and SD3_DAT1 are muxed as can2 Tx and Rx. The signals for can2
+ * Tx and Rx are routed to the DHCOM UART1 rts/cts pins. So to enable can2 on
+ * the board device tree file, the micro SD card must be disabled and the uart1
+ * rts/cts must be disabled or output on other DHCOM pins.
+ */
+&can2 {
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default";
+       status = "disabled";
+};
+
+&ecspi1 {
+       cs-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>, <&gpio4 11 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       flash@0 { /* S25FL116K */
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               m25p,fast-read;
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+       };
+};
+
+&ecspi2 {
+       cs-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       pinctrl-names = "default";
+       status = "disabled";
+};
+
+&fec {
+       phy-mode = "rmii";
+       phy-handle = <&ethphy0>;
+       pinctrl-0 = <&pinctrl_enet_100M>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 { /* SMSC LAN8710Ai */
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
+                       pinctrl-0 = <&pinctrl_ethphy0>;
+                       pinctrl-names = "default";
+                       reg = <0>;
+                       reset-assert-us = <1000>;
+                       reset-deassert-us = <1000>;
+                       reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
+                       smsc,disable-energy-detect; /* Make plugin detection reliable */
+               };
+       };
+};
+
+&gpio1 {
+       gpio-line-names =
+               "", "", "DHCOM-A", "", "DHCOM-B", "DHCOM-C", "", "",
+               "", "", "", "", "", "", "", "",
+               "DHCOM-R", "DHCOM-S", "DHCOM-Q", "DHCOM-T", "DHCOM-U", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio2 {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "SOM-HW2", "", "", "SOM-HW0", "", "SOM-MEM1", "SOM-MEM0", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio3 {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "DHCOM-G", "", "", "", "";
+};
+
+&gpio4 {
+       gpio-line-names =
+               "", "", "", "", "", "DHCOM-E", "DHCOM-INT", "DHCOM-H",
+               "DHCOM-I", "DHCOM-L", "", "", "", "", "", "",
+               "", "", "", "", "DHCOM-F", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio5 {
+       gpio-line-names =
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "DHCOM-V", "DHCOM-W", "", "DHCOM-O", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio6 {
+       gpio-line-names =
+               "", "", "", "DHCOM-D", "", "", "SOM-HW1", "",
+               "", "", "", "", "", "", "DHCOM-J", "DHCOM-K",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&gpio7 {
+       gpio-line-names =
+               "DHCOM-M", "DHCOM-N", "", "", "", "", "", "",
+               "", "", "", "", "", "DHCOM-P", "", "",
+               "", "", "", "", "", "", "", "",
+               "", "", "", "", "", "", "", "";
+};
+
+&i2c1 {
+       /*
+        * Info: According to erratum ERR007805 clock frequency limit is 375000.
+        * The erratum for i.MX6S/DL is here [1] and for i.MX6Q/D is here [2].
+        * [1] https://www.nxp.com/docs/en/errata/IMX6SDLCE.pdf
+        * [2] https://www.nxp.com/docs/en/errata/IMX6DQCE.pdf
+        */
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio3 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+};
+
+&i2c2 {
+       /* Info: Clock frequency limit is 375000 (for details see i2c1) */
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio4 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio4 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+};
+
+&i2c3 {
+       /* Info: Clock frequency limit is 375000 (for details see i2c1) */
+       clock-frequency = <100000>;
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       ltc3676: pmic@3c {
+               compatible = "lltc,ltc3676";
+               interrupt-parent = <&gpio5>;
+               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-0 = <&pinctrl_pmic>;
+               pinctrl-names = "default";
+               reg = <0x3c>;
+
+               regulators {
+                       sw1_reg: sw1 {
+                               lltc,fb-voltage-divider = <100000 110000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1527272>;
+                               regulator-min-microvolt = <787500>;
+                               regulator-ramp-delay = <7000>;
+                               regulator-suspend-mem-microvolt = <1040000>;
+                       };
+
+                       sw2_reg: sw2 {
+                               lltc,fb-voltage-divider = <100000 28000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3657142>;
+                               regulator-min-microvolt = <1885714>;
+                               regulator-ramp-delay = <7000>;
+                       };
+
+                       sw3_reg: sw3 {
+                               lltc,fb-voltage-divider = <100000 110000>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1527272>;
+                               regulator-min-microvolt = <787500>;
+                               regulator-ramp-delay = <7000>;
+                               regulator-suspend-mem-microvolt = <980000>;
+                       };
+
+                       sw4_reg: sw4 {
+                               lltc,fb-voltage-divider = <100000 93100>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1659291>;
+                               regulator-min-microvolt = <855571>;
+                               regulator-ramp-delay = <7000>;
+                       };
+
+                       ldo1_reg: ldo1 {
+                               lltc,fb-voltage-divider = <102000 29400>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3240306>;
+                               regulator-min-microvolt = <3240306>;
+                       };
+
+                       ldo2_reg: ldo2 {
+                               lltc,fb-voltage-divider = <100000 41200>;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <2484708>;
+                               regulator-min-microvolt = <2484708>;
+                       };
+               };
+       };
+
+       touchscreen@49 { /* TSC2004 */
+               compatible = "ti,tsc2004";
+               interrupts-extended = <&gpio4 14 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-0 = <&pinctrl_tsc2004>;
+               pinctrl-names = "default";
+               reg = <0x49>;
+               vio-supply = <&reg_3p3v>;
+               status = "disabled";
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c02";
+               pagesize = <16>;
+               reg = <0x50>;
+       };
+
+       rtc_i2c: rtc@56 {
+               compatible = "microcrystal,rv3029";
+               interrupt-parent = <&gpio7>;
+               interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-0 = <&pinctrl_rtc>;
+               pinctrl-names = "default";
+               reg = <0x56>;
+       };
+};
+
+&pcie {
+       pinctrl-0 = <&pinctrl_pcie>;
+       pinctrl-names = "default";
+};
+
+&pwm1 {
+       pinctrl-0 = <&pinctrl_pwm1>;
+       pinctrl-names = "default";
+};
+
+&reg_arm {
+       vin-supply = <&sw3_reg>;
+};
+
+&reg_pu {
+       vin-supply = <&sw1_reg>;
+};
+
+&reg_soc {
+       vin-supply = <&sw1_reg>;
+};
+
+&reg_vdd1p1 {
+       vin-supply = <&sw2_reg>;
+};
+
+&reg_vdd2p5 {
+       vin-supply = <&sw2_reg>;
+};
+
+&uart1 { /* DHCOM UART1 */
+       dcd-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+       dsr-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
+       dtr-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
+       rng-gpios = <&gpio2 31 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_uart1>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&uart4 { /* DHCOM UART3 */
+       pinctrl-0 = <&pinctrl_uart4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&uart5 { /* DHCOM UART2 */
+       pinctrl-0 = <&pinctrl_uart5>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&usbh1 {
+       dr_mode = "host";
+       pinctrl-0 = <&pinctrl_usbh1>;
+       pinctrl-names = "default";
+       vbus-supply = <&reg_usb_h1_vbus>;
+       status = "okay";
+};
+
+&usbotg {
+       disable-over-current;
+       dr_mode = "otg";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       pinctrl-names = "default";
+       vbus-supply = <&reg_usb_otg_vbus>;
+       status = "okay";
+};
+
+&usdhc2 { /* External SD card via DHCOM */
+       cd-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>;
+       keep-power-in-suspend;
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-names = "default";
+       status = "disabled";
+};
+
+&usdhc3 { /* Micro SD card on module */
+       cd-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>;
+       fsl,wp-controller;
+       keep-power-in-suspend;
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&usdhc4 { /* eMMC on module */
+       bus-width = <8>;
+       keep-power-in-suspend;
+       no-1-8-v;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc4>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&weim {
+       #address-cells = <2>;
+       #size-cells = <1>;
+       fsl,weim-cs-gpr = <&gpr>;
+       pinctrl-0 = <&pinctrl_weim &pinctrl_weim_cs0 &pinctrl_weim_cs1>;
+       pinctrl-names = "default";
+       /* It is necessary to setup 2x 64MB otherwise setting gpr fails */
+       ranges = <0 0 0x08000000 0x04000000>, /* CS0 */
+                <1 0 0x0c000000 0x04000000>; /* CS1 */
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl-0 = <
+                       &pinctrl_hog_base
+                       &pinctrl_dhcom_a &pinctrl_dhcom_b &pinctrl_dhcom_c
+                       &pinctrl_dhcom_d &pinctrl_dhcom_e &pinctrl_dhcom_f
+                       &pinctrl_dhcom_g &pinctrl_dhcom_h &pinctrl_dhcom_i
+                       &pinctrl_dhcom_j &pinctrl_dhcom_k &pinctrl_dhcom_l
+                       &pinctrl_dhcom_m &pinctrl_dhcom_n &pinctrl_dhcom_o
+                       &pinctrl_dhcom_p &pinctrl_dhcom_q &pinctrl_dhcom_r
+                       &pinctrl_dhcom_s &pinctrl_dhcom_t &pinctrl_dhcom_u
+                       &pinctrl_dhcom_v &pinctrl_dhcom_w &pinctrl_dhcom_int
+               >;
+       pinctrl-names = "default";
+
+       pinctrl_hog_base: hog-base-grp {
+               fsl,pins = <
+                       /* GPIOs for memory coding */
+                       MX6QDL_PAD_EIM_A16__GPIO2_IO22          0x120b0
+                       MX6QDL_PAD_EIM_A17__GPIO2_IO21          0x120b0
+                       /* GPIOs for hardware coding */
+                       MX6QDL_PAD_EIM_A19__GPIO2_IO19          0x120b0
+                       MX6QDL_PAD_EIM_A22__GPIO2_IO16          0x120b0
+                       MX6QDL_PAD_EIM_A23__GPIO6_IO06          0x120b0
+               >;
+       };
+
+       /* DHCOM GPIOs */
+       pinctrl_dhcom_a: dhcom-a-grp {
+               fsl,pins = <MX6QDL_PAD_GPIO_2__GPIO1_IO02       0x400120b0>;
+       };
+
+       pinctrl_dhcom_b: dhcom-b-grp {
+               fsl,pins = <MX6QDL_PAD_GPIO_4__GPIO1_IO04       0x400120b0>;
+       };
+
+       pinctrl_dhcom_c: dhcom-c-grp {
+               fsl,pins = <MX6QDL_PAD_GPIO_5__GPIO1_IO05       0x400120b0>;
+       };
+
+       pinctrl_dhcom_d: dhcom-d-grp {
+               fsl,pins = <MX6QDL_PAD_CSI0_DAT17__GPIO6_IO03   0x400120b0>;
+       };
+
+       pinctrl_dhcom_e: dhcom-e-grp {
+               fsl,pins = <MX6QDL_PAD_GPIO_19__GPIO4_IO05      0x400120b0>;
+       };
+
+       pinctrl_dhcom_f: dhcom-f-grp {
+               fsl,pins = <MX6QDL_PAD_DI0_PIN4__GPIO4_IO20     0x400120b0>;
+       };
+
+       pinctrl_dhcom_g: dhcom-g-grp {
+               fsl,pins = <MX6QDL_PAD_EIM_D27__GPIO3_IO27      0x400120b0>;
+       };
+
+       pinctrl_dhcom_h: dhcom-h-grp {
+               fsl,pins = <MX6QDL_PAD_KEY_ROW0__GPIO4_IO07     0x400120b0>;
+       };
+
+       pinctrl_dhcom_i: dhcom-i-grp {
+               fsl,pins = <MX6QDL_PAD_KEY_COL1__GPIO4_IO08     0x400120b0>;
+       };
+
+       pinctrl_dhcom_j: dhcom-j-grp {
+               fsl,pins = <MX6QDL_PAD_NANDF_CS1__GPIO6_IO14    0x400120b0>;
+       };
+
+       pinctrl_dhcom_k: dhcom-k-grp {
+               fsl,pins = <MX6QDL_PAD_NANDF_CS2__GPIO6_IO15    0x400120b0>;
+       };
+
+       pinctrl_dhcom_l: dhcom-l-grp {
+               fsl,pins = <MX6QDL_PAD_KEY_ROW1__GPIO4_IO09     0x400120b0>;
+       };
+
+       pinctrl_dhcom_m: dhcom-m-grp {
+               fsl,pins = <MX6QDL_PAD_SD3_DAT5__GPIO7_IO00     0x400120b0>;
+       };
+
+       pinctrl_dhcom_n: dhcom-n-grp {
+               fsl,pins = <MX6QDL_PAD_SD3_DAT4__GPIO7_IO01     0x400120b0>;
+       };
+
+       pinctrl_dhcom_o: dhcom-o-grp {
+               fsl,pins = <MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21   0x400120b0>;
+       };
+
+       pinctrl_dhcom_p: dhcom-p-grp {
+               fsl,pins = <MX6QDL_PAD_GPIO_18__GPIO7_IO13      0x400120b0>;
+       };
+
+       pinctrl_dhcom_q: dhcom-q-grp {
+               fsl,pins = <MX6QDL_PAD_SD1_CMD__GPIO1_IO18      0x400120b0>;
+       };
+
+       pinctrl_dhcom_r: dhcom-r-grp {
+               fsl,pins = <MX6QDL_PAD_SD1_DAT0__GPIO1_IO16     0x400120b0>;
+       };
+
+       pinctrl_dhcom_s: dhcom-s-grp {
+               fsl,pins = <MX6QDL_PAD_SD1_DAT1__GPIO1_IO17     0x400120b0>;
+       };
+
+       pinctrl_dhcom_t: dhcom-t-grp {
+               fsl,pins = <MX6QDL_PAD_SD1_DAT2__GPIO1_IO19     0x400120b0>;
+       };
+
+       pinctrl_dhcom_u: dhcom-u-grp {
+               fsl,pins = <MX6QDL_PAD_SD1_CLK__GPIO1_IO20      0x400120b0>;
+       };
+
+       pinctrl_dhcom_v: dhcom-v-grp {
+               fsl,pins = <MX6QDL_PAD_CSI0_PIXCLK__GPIO5_IO18  0x400120b0>;
+       };
+
+       pinctrl_dhcom_w: dhcom-w-grp {
+               fsl,pins = <MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19    0x400120b0>;
+       };
+
+       pinctrl_dhcom_int: dhcom-int-grp {
+               fsl,pins = <MX6QDL_PAD_KEY_COL0__GPIO4_IO06     0x400120b0>;
+       };
+
+       pinctrl_ecspi1: ecspi1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK         0x100b1
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI         0x100b1
+                       MX6QDL_PAD_EIM_EB2__GPIO2_IO30          0x1b0b0
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11         0x1b0b0
+               >;
+       };
+
+       pinctrl_ecspi2: ecspi2-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT8__ECSPI2_SCLK       0x100b1
+                       MX6QDL_PAD_CSI0_DAT9__ECSPI2_MOSI       0x100b1
+                       MX6QDL_PAD_CSI0_DAT10__ECSPI2_MISO      0x100b1
+                       MX6QDL_PAD_CSI0_DAT11__GPIO5_IO29       0x1b0b0
+               >;
+       };
+
+       pinctrl_enet_100M: enet-100M-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN      0x1b0b0
+                       MX6QDL_PAD_ENET_MDC__ENET_MDC           0x1b0b0
+                       MX6QDL_PAD_ENET_MDIO__ENET_MDIO         0x1b0b0
+                       MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER       0x1b0b0
+                       MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1     0x1b0b0
+                       MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN       0x1b0b0
+                       MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0     0x1b0b0
+                       MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1     0x1b0b0
+                       MX6QDL_PAD_GPIO_16__ENET_REF_CLK        0x4001b0a8
+               >;
+       };
+
+       pinctrl_enet_vio: enet-vio-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__GPIO1_IO07           0x120b0
+               >;
+       };
+
+       pinctrl_ethphy0: ethphy0-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_WAIT__GPIO5_IO00         0xb0 /* Reset */
+                       MX6QDL_PAD_KEY_ROW4__GPIO4_IO15         0xb1 /* Int */
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_8__FLEXCAN1_RX          0x1b0b0
+                       MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX        0x1b0b0
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX        0x1b0b0
+                       MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX        0x1b0b0
+               >;
+       };
+
+       pinctrl_i2c1: i2c1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__I2C1_SCL            0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__I2C1_SDA            0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1-gpio-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D21__GPIO3_IO21          0x4001b8b1
+                       MX6QDL_PAD_EIM_D28__GPIO3_IO28          0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2: i2c2-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__I2C2_SCL           0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__I2C2_SDA           0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2-gpio-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL3__GPIO4_IO12         0x4001b8b1
+                       MX6QDL_PAD_KEY_ROW3__GPIO4_IO13         0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_3__I2C3_SCL             0x4001b8b1
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA             0x4001b8b1
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3-gpio-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_3__GPIO1_IO03           0x4001b8b1
+                       MX6QDL_PAD_GPIO_6__GPIO1_IO06           0x4001b8b1
+               >;
+       };
+
+       pinctrl_pcie: pcie-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20     0x1b0b1 /* Wake */
+               >;
+       };
+
+       pinctrl_pmic: pmic-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_A25__GPIO5_IO02          0x1b0b0
+               >;
+       };
+
+       pinctrl_pwm1: pwm1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_DAT3__PWM1_OUT           0x1b0b1
+               >;
+       };
+
+       pinctrl_rtc: rtc-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_17__GPIO7_IO12          0x120b0
+               >;
+       };
+
+       pinctrl_tsc2004: tsc2004-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__GPIO4_IO14         0x120b0
+               >;
+       };
+
+       pinctrl_uart1: uart1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D19__UART1_CTS_B         0x4001b0b1
+                       MX6QDL_PAD_EIM_D20__UART1_RTS_B         0x1b0b1
+                       MX6QDL_PAD_EIM_D23__GPIO3_IO23          0x4001b0b1
+                       MX6QDL_PAD_EIM_D24__GPIO3_IO24          0x4001b0b1
+                       MX6QDL_PAD_EIM_D25__GPIO3_IO25          0x4001b0b1
+                       MX6QDL_PAD_EIM_EB3__GPIO2_IO31          0x4001b0b1
+                       MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA      0x1b0b1
+                       MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA      0x1b0b1
+               >;
+       };
+
+       pinctrl_uart4: uart4-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA    0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA    0x1b0b1
+               >;
+       };
+
+       pinctrl_uart5: uart5-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA    0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA    0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B      0x1b0b1
+                       MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B      0x4001b0b1
+               >;
+       };
+
+       pinctrl_usbh1: usbh1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x120b0
+               >;
+       };
+
+       pinctrl_usbotg: usbotg-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CS3__GPIO6_IO16        0x120b0
+                       MX6QDL_PAD_SD2_CLK__SD2_CLK             0x10059
+                       MX6QDL_PAD_SD2_CMD__SD2_CMD             0x17059
+                       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_usdhc3: usdhc3-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_CLK__SD3_CLK             0x10059
+                       MX6QDL_PAD_SD3_CMD__SD3_CMD             0x17059
+                       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_RST__GPIO7_IO08          0x120b0
+               >;
+       };
+
+       pinctrl_usdhc4: usdhc4-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD4_CLK__SD4_CLK             0x10059
+                       MX6QDL_PAD_SD4_CMD__SD4_CMD             0x17059
+                       MX6QDL_PAD_SD4_DAT0__SD4_DATA0          0x17059
+                       MX6QDL_PAD_SD4_DAT1__SD4_DATA1          0x17059
+                       MX6QDL_PAD_SD4_DAT2__SD4_DATA2          0x17059
+                       MX6QDL_PAD_SD4_DAT3__SD4_DATA3          0x17059
+                       MX6QDL_PAD_SD4_DAT4__SD4_DATA4          0x17059
+                       MX6QDL_PAD_SD4_DAT5__SD4_DATA5          0x17059
+                       MX6QDL_PAD_SD4_DAT6__SD4_DATA6          0x17059
+                       MX6QDL_PAD_SD4_DAT7__SD4_DATA7          0x17059
+               >;
+       };
+
+       pinctrl_weim: weim-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_DA0__EIM_AD00            0xb0a6
+                       MX6QDL_PAD_EIM_DA1__EIM_AD01            0xb0a6
+                       MX6QDL_PAD_EIM_DA2__EIM_AD02            0xb0a6
+                       MX6QDL_PAD_EIM_DA3__EIM_AD03            0xb0a6
+                       MX6QDL_PAD_EIM_DA4__EIM_AD04            0xb0a6
+                       MX6QDL_PAD_EIM_DA5__EIM_AD05            0xb0a6
+                       MX6QDL_PAD_EIM_DA6__EIM_AD06            0xb0a6
+                       MX6QDL_PAD_EIM_DA7__EIM_AD07            0xb0a6
+                       MX6QDL_PAD_EIM_DA8__EIM_AD08            0xb0a6
+                       MX6QDL_PAD_EIM_DA9__EIM_AD09            0xb0a6
+                       MX6QDL_PAD_EIM_DA10__EIM_AD10           0xb0a6
+                       MX6QDL_PAD_EIM_DA11__EIM_AD11           0xb0a6
+                       MX6QDL_PAD_EIM_DA12__EIM_AD12           0xb0a6
+                       MX6QDL_PAD_EIM_DA13__EIM_AD13           0xb0a6
+                       MX6QDL_PAD_EIM_DA14__EIM_AD14           0xb0a6
+                       MX6QDL_PAD_EIM_DA15__EIM_AD15           0xb0a6
+                       MX6QDL_PAD_EIM_D22__GPIO3_IO22          0x130b0
+                       MX6QDL_PAD_EIM_LBA__EIM_LBA_B           0xb060 /* LE */
+                       MX6QDL_PAD_EIM_OE__EIM_OE_B             0xb0a6
+                       MX6QDL_PAD_EIM_RW__EIM_RW               0xb0a6 /* WE */
+               >;
+       };
+
+       pinctrl_weim_cs0: weim-cs0-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_CS0__EIM_CS0_B           0xb0b1
+               >;
+       };
+
+       pinctrl_weim_cs1: weim-cs1-grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_CS1__EIM_CS1_B           0xb0b1
+               >;
+       };
+};
index 3c04b5a..069c27f 100644 (file)
                fsl,pins = <
                        MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
                        MX6QDL_PAD_EIM_D22__GPIO3_IO22          0x1b0b0 /* OTG_PWR_EN */
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC         0x17059
                >;
        };
 
index 8e587e1..b1df2be 100644 (file)
                fsl,pins = <
                        MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
                        MX6QDL_PAD_EIM_D22__GPIO3_IO22  0x1b0b0 /* OTG_PWR_EN */
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC         0x17059
                >;
        };
 
index 29ba24c..cda48bf 100644 (file)
                fsl,pins = <
                        MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
                        MX6QDL_PAD_EIM_D22__GPIO3_IO22          0x1b0b0 /* PWR_EN */
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC         0x17059
                >;
        };
 
index c15b9cc..4662408 100644 (file)
                fsl,pins = <
                        MX6QDL_PAD_GPIO_1__USB_OTG_ID           0x17059
                        MX6QDL_PAD_EIM_D22__GPIO3_IO22          0x1b0b0 /* OTG_PWR_EN */
+                       MX6QDL_PAD_KEY_COL4__USB_OTG_OC         0x17059
                >;
        };
 
index 304f3fb..612b6e0 100644 (file)
                };
        };
 
+       crypto@60 {
+               compatible = "atmel,atecc508a";
+               reg = <0x60>;
+       };
+
        imu@6a {
                compatible = "st,lsm9ds1-imu";
                reg = <0x6a>;
diff --git a/arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi b/arch/arm/boot/dts/imx6qdl-skov-cpu-revc.dtsi
new file mode 100644 (file)
index 0000000..69ae430
--- /dev/null
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+&ecspi4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi4>;
+       cs-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       touchscreen@0 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_touch>;
+               compatible = "ti,tsc2046";
+               reg = <0>;
+               spi-max-frequency = <1000000>;
+               interrupts-extended = <&gpio3 19 IRQ_TYPE_LEVEL_LOW>;
+               vcc-supply  = <&reg_3v3>;
+               pendown-gpio = <&gpio3 19 GPIO_ACTIVE_LOW>;
+               ti,x-plate-ohms = /bits/ 16 <850>;
+               ti,y-plate-ohms = /bits/ 16 <295>;
+               ti,pressure-min = /bits/ 16 <2>;
+               ti,pressure-max = /bits/ 16 <1500>;
+               ti,vref-mv      = /bits/ 16 <3300>;
+               ti,settle-delay-usec = /bits/ 16 <15>;
+               ti,vref-delay-usecs = /bits/ 16 <0>;
+               ti,penirq-recheck-delay-usecs = /bits/ 16 <100>;
+               ti,debounce-max = /bits/ 16 <100>;
+               ti,debounce-tol = /bits/ 16 <(~0)>;
+               ti,debounce-rep = /bits/ 16 <4>;
+               touchscreen-swapped-x-y;
+               touchscreen-inverted-y;
+               wakeup-source;
+       };
+};
+
+&iomuxc {
+       pinctrl_ecspi4: ecspi4grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D28__ECSPI4_MOSI                 0x100b1
+                       MX6QDL_PAD_EIM_D22__ECSPI4_MISO                 0x000b1
+                       MX6QDL_PAD_EIM_D21__ECSPI4_SCLK                 0x000b1
+                       /* *no* external pull up */
+                       MX6QDL_PAD_EIM_D20__GPIO3_IO20          0x40000058
+               >;
+       };
+
+       pinctrl_touch: touchgrp {
+               fsl,pins = <
+                       /* external pull up */
+                       MX6QDL_PAD_EIM_D19__GPIO3_IO19                  0x10040
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi b/arch/arm/boot/dts/imx6qdl-skov-cpu.dtsi
new file mode 100644 (file)
index 0000000..77a91a9
--- /dev/null
@@ -0,0 +1,477 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+//
+// Copyright (C) 2020 Pengutronix, Ulrich Oelmann <kernel@pengutronix.de>
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       aliases {
+               can0 = &can1;
+               can1 = &can2;
+               mdio-gpio0 = &mdio;
+               nand = &gpmi;
+               rtc0 = &i2c_rtc;
+               rtc1 = &snvs;
+               usb0 = &usbh1;
+               usb1 = &usbotg;
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc 0>, /* 24V */
+                             <&adc 1>; /* temperature */
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       label = "D1";
+                       gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
+                       function = LED_FUNCTION_STATUS;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led-1 {
+                       label = "D2";
+                       gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+
+               led-2 {
+                       label = "D3";
+                       gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       mdio: mdio {
+               compatible = "microchip,mdio-smi0";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_mdio>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>,
+                       <&gpio1 22 GPIO_ACTIVE_HIGH>;
+
+               switch@0 {
+                       compatible = "microchip,ksz8873";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_switch>;
+                       interrupt-parent = <&gpio3>;
+                       interrupt = <30 IRQ_TYPE_LEVEL_HIGH>;
+                       reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+                       reg = <0>;
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               ports@0 {
+                                       reg = <0>;
+                                       phy-mode = "internal";
+                                       label = "lan1";
+                               };
+
+                               ports@1 {
+                                       reg = <1>;
+                                       phy-mode = "internal";
+                                       label = "lan2";
+                               };
+
+                               ports@2 {
+                                       reg = <2>;
+                                       label = "cpu";
+                                       ethernet = <&fec>;
+                                       phy-mode = "rmii";
+
+                                       fixed-link {
+                                               speed = <100>;
+                                               full-duplex;
+                                       };
+                               };
+                       };
+               };
+
+       };
+
+       clk50m_phy: phy-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <50000000>;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               vin-supply = <&reg_5v0>;
+               regulator-name = "3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_5v0: regulator-5v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_24v0: regulator-24v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "24v0";
+               regulator-min-microvolt = <24000000>;
+               regulator-max-microvolt = <24000000>;
+       };
+
+       reg_can1_stby: regulator-can1-stby {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_can1_stby>;
+               regulator-name = "can1-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio3 31 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_can2_stby: regulator-can2-stby {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_can2_stby>;
+               regulator-name = "can2-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio4 11 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_vcc_mmc: regulator-vcc-mmc {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_vcc_mmc>;
+               vin-supply = <&reg_3v3>;
+               regulator-name = "mmc_vcc_supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <100>;
+       };
+
+       reg_vcc_mmc_io: regulator-vcc-mmc-io {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_vcc_mmc_io>;
+               vin-supply = <&reg_5v0>;
+               regulator-name = "mmc_io_supply";
+               regulator-type = "voltage";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               states = <1800000 0x1>, <3300000 0x0>;
+               startup-delay-us = <100>;
+       };
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1>;
+       xceiver-supply = <&reg_can1_stby>;
+       status = "okay";
+};
+
+&can2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can2>;
+       xceiver-supply = <&reg_can2_stby>;
+       status = "okay";
+};
+
+&ecspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       cs-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <54000000>;
+               reg = <0>;
+       };
+};
+
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       adc: adc@0 {
+               compatible = "microchip,mcp3002";
+               reg = <0>;
+               vref-supply = <&reg_3v3>;
+               spi-max-frequency = <1000000>;
+               #io-channel-cells = <1>;
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet>;
+       clocks = <&clks IMX6QDL_CLK_ENET>,
+                <&clks IMX6QDL_CLK_ENET>,
+                <&clk50m_phy>;
+       clock-names = "ipg", "ahb", "ptp";
+       phy-mode = "rmii";
+       phy-supply = <&reg_3v3>;
+       status = "okay";
+
+       fixed-link {
+               speed = <100>;
+               full-duplex;
+       };
+};
+
+&gpmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpmi_nand>;
+       nand-on-flash-bbt;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       i2c_rtc: rtc@51 {
+               compatible = "nxp,pcf85063";
+               reg = <0x51>;
+               quartz-load-femtofarads = <12500>;
+       };
+};
+
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm2>;
+       #pwm-cells = <2>;
+       status = "okay";
+};
+
+&pwm3 {
+       /* used for LCD contrast control */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm3>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usbh1 {
+       vbus-supply = <&reg_5v0>;
+       disable-over-current;
+       status = "okay";
+};
+
+/* no usbh2 */
+&usbphynop1 {
+       status = "disabled";
+};
+
+/* no usbh3 */
+&usbphynop2 {
+       status = "disabled";
+};
+
+&usbotg {
+       vbus-supply = <&reg_5v0>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
+       cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
+       cap-power-off-card;
+       full-pwr-cycle;
+       bus-width = <4>;
+       max-frequency = <50000000>;
+       cap-sd-highspeed;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-ddr50;
+       mmc-ddr-1_8v;
+       vmmc-supply = <&reg_vcc_mmc>;
+       vqmmc-supply = <&reg_vcc_mmc_io>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_can1: can1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_7__FLEXCAN1_TX                  0x3008
+                       MX6QDL_PAD_GPIO_8__FLEXCAN1_RX                  0x1b000
+               >;
+       };
+
+       pinctrl_can1_stby: can1stbygrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D31__GPIO3_IO31                  0x13008
+               >;
+       };
+
+       pinctrl_can2: can2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX                0x3008
+                       MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX                0x1b000
+               >;
+       };
+
+       pinctrl_can2_stby: can2stbygrp {
+               fsl,pins = <
+                       MX6QDL_PAD_KEY_ROW2__GPIO4_IO11                 0x13008
+               >;
+       };
+
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D17__ECSPI1_MISO                 0x100b1
+                       MX6QDL_PAD_EIM_D18__ECSPI1_MOSI                 0xb1
+                       MX6QDL_PAD_EIM_D16__ECSPI1_SCLK                 0xb1
+                       /* *no* external pull up */
+                       MX6QDL_PAD_EIM_D24__GPIO3_IO24                  0x58
+               >;
+       };
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_OE__ECSPI2_MISO                  0x100b1
+                       MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI                 0xb1
+                       MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK                 0xb1
+                       /* external pull up */
+                       MX6QDL_PAD_EIM_RW__GPIO2_IO26                   0x58
+               >;
+       };
+
+       pinctrl_enet: enetgrp {
+               fsl,pins = <
+                       /* RMII 50 MHz */
+                       MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN              0x100f5
+                       MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN               0x100f5
+                       MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0             0x100c0
+                       MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1             0x100c0
+                       MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0             0x100f5
+                       MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1             0x100f5
+                       MX6QDL_PAD_GPIO_16__ENET_REF_CLK                0x1b0b0
+                       MX6QDL_PAD_GPIO_5__GPIO1_IO05                   0x58
+                       /* GPIO for "link active" */
+                       MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24               0x3038
+               >;
+       };
+
+       pinctrl_gpmi_nand: gpminandgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_NANDF_CLE__NAND_CLE                  0xb0b1
+                       MX6QDL_PAD_NANDF_ALE__NAND_ALE                  0xb0b1
+                       MX6QDL_PAD_NANDF_RB0__NAND_READY_B              0xb000
+                       MX6QDL_PAD_NANDF_CS0__NAND_CE0_B                0xb0b1
+                       MX6QDL_PAD_NANDF_CS1__NAND_CE1_B                0xb0b1
+                       MX6QDL_PAD_SD4_CMD__NAND_RE_B                   0xb0b1
+                       MX6QDL_PAD_SD4_CLK__NAND_WE_B                   0xb0b1
+                       MX6QDL_PAD_NANDF_D0__NAND_DATA00                0xb0b1
+                       MX6QDL_PAD_NANDF_D1__NAND_DATA01                0xb0b1
+                       MX6QDL_PAD_NANDF_D2__NAND_DATA02                0xb0b1
+                       MX6QDL_PAD_NANDF_D3__NAND_DATA03                0xb0b1
+                       MX6QDL_PAD_NANDF_D4__NAND_DATA04                0xb0b1
+                       MX6QDL_PAD_NANDF_D5__NAND_DATA05                0xb0b1
+                       MX6QDL_PAD_NANDF_D6__NAND_DATA06                0xb0b1
+                       MX6QDL_PAD_NANDF_D7__NAND_DATA07                0xb0b1
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       /* external 10 k pull up */
+                       MX6QDL_PAD_GPIO_3__I2C3_SCL             0x40010878
+                       /* external 10 k pull up */
+                       MX6QDL_PAD_GPIO_6__I2C3_SDA             0x40010878
+               >;
+       };
+
+       pinctrl_mdio: mdiogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_ENET_MDIO__GPIO1_IO22                0x100b1
+                       MX6QDL_PAD_ENET_MDC__GPIO1_IO31                 0xb1
+               >;
+       };
+
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_1__PWM2_OUT                     0x58
+               >;
+       };
+
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD1_DAT1__PWM3_OUT                   0x58
+               >;
+       };
+
+       pinctrl_switch: switchgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D30__GPIO3_IO30                  0xb0
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6QDL_PAD_EIM_D26__UART2_TX_DATA               0x1b0b1
+                       MX6QDL_PAD_EIM_D27__UART2_RX_DATA               0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       /* SoC internal pull up required */
+                       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
+                       /* SoC internal pull up required */
+                       MX6QDL_PAD_SD3_DAT4__GPIO7_IO01                 0x1b040
+                       /* SoC internal pull up required */
+                       MX6QDL_PAD_SD3_DAT5__GPIO7_IO00                 0x1b040
+               >;
+       };
+
+       pinctrl_vcc_mmc: vccmmcgrp {
+               fsl,pins = <
+                       MX6QDL_PAD_SD3_RST__GPIO7_IO08                  0x58
+               >;
+       };
+
+       pinctrl_vcc_mmc_io: vccmmciogrp {
+               fsl,pins = <
+                       MX6QDL_PAD_GPIO_18__GPIO7_IO13                  0x58
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6qdl-solidsense.dtsi b/arch/arm/boot/dts/imx6qdl-solidsense.dtsi
new file mode 100644 (file)
index 0000000..234827e
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2021 Russell King <rmk@armlinux.org.uk>
+ *
+ * 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
+ *     version 2 as published by the Free Software Foundation.
+ *
+ *     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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include <dt-bindings/leds/common.h>
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_solidsense_leds>;
+
+               /* Red/Green LED1 - next to WiFi SMA */
+               led-11 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <0>;
+                       gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
+               };
+
+               led-12 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <0>;
+                       gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
+               };
+
+               /* Red/Green LED2 - next to GPS SMA */
+               led-21 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <1>;
+                       gpios = <&gpio2 25 GPIO_ACTIVE_LOW>;
+               };
+
+               led-22 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_INDICATOR;
+                       function-enumerator = <1>;
+                       gpios = <&gpio2 24 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&audio {
+       status = "disabled";
+};
+
+&ecspi2 {
+       status = "disabled";
+};
+
+&i2c3 {
+       status = "disabled";
+};
+
+&iomuxc {
+       pinctrl-0 = <&pinctrl_hog>, <&pinctrl_solidsense_hog>;
+
+       solidsense {
+               pinctrl_solidsense_hog: solidsense-hog {
+                       fsl,pins = <
+                               /* Nordic RESET_N */
+                               MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x400130b1
+                               /* Nordic Chip 1 SWDIO - GPIO 125 */
+                               MX6QDL_PAD_DISP0_DAT8__GPIO4_IO29 0x400130b1
+                               /* Nordic Chip 1 SWDCLK - GPIO 59 */
+                               /* already claimed in the HB2 hogs */
+                               /* MX6QDL_PAD_EIM_LBA__GPIO2_IO27 0x400130b1 */
+                               /* Nordic Chip 2 SWDIO - GPIO 81 */
+                               MX6QDL_PAD_EIM_D17__GPIO3_IO17 0x400130b1
+                               /* Nordic Chip 2 SWCLK - GPIO 82 */
+                               MX6QDL_PAD_EIM_D18__GPIO3_IO18 0x400130b1
+                       >;
+               };
+
+               pinctrl_solidsense_leds: solidsense-leds {
+                       fsl,pins = <
+                               /* Red LED 1 - GPIO 58 */
+                               MX6QDL_PAD_EIM_RW__GPIO2_IO26 0x400130b1
+                               /* Green LED 1 - GPIO 55 */
+                               MX6QDL_PAD_EIM_CS0__GPIO2_IO23 0x400130b1
+                               /* Red LED 2 - GPIO 57 */
+                               MX6QDL_PAD_EIM_OE__GPIO2_IO25 0x400130b1
+                               /* Green LED 2 - GPIO 56 */
+                               MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x400130b1
+                       >;
+               };
+
+               pinctrl_solidsense_uart2: solidsense-uart2 {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA      0x1b0b1
+                               MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA      0x1b0b1
+                       >;
+               };
+
+               pinctrl_solidsense_uart3: solidsense-uart3 {
+                       fsl,pins = <
+                               MX6QDL_PAD_EIM_D24__UART3_TX_DATA       0x1b0b1
+                               MX6QDL_PAD_EIM_D25__UART3_RX_DATA       0x1b0b1
+                       >;
+               };
+       };
+};
+
+&pwm1 {
+       status = "disabled";
+};
+
+&sgtl5000 {
+       status = "disabled";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_solidsense_uart2>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_solidsense_uart3>;
+       status = "okay";
+};
index c427239..b92e0f2 100644 (file)
 &fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
+       assigned-clocks = <&clks IMX6QDL_CLK_ENET_REF>;
+       assigned-clock-rates = <125000000>;
        status = "okay";
 
        phy-mode = "rgmii";
diff --git a/arch/arm/boot/dts/imx6s-dhcom-drc02.dts b/arch/arm/boot/dts/imx6s-dhcom-drc02.dts
new file mode 100644 (file)
index 0000000..4077b60
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2021 DH electronics GmbH
+ *
+ * DHCOM iMX6 variant:
+ * DHCM-iMX6S-C0800-R102-F0409-E-CAN2-RTC-I-01D2
+ * DHCOM PCB number: 493-400 or newer
+ * DRC02 PCB number: 568-100 or newer
+ */
+/dts-v1/;
+
+/*
+ * The kernel only distinguishes between i.MX6 Quad and DualLite,
+ * but the Solo is actually a DualLite with only one CPU. So use
+ * DualLite for the Solo and disable one CPU node.
+ */
+
+#include "imx6dl.dtsi"
+#include "imx6qdl-dhcom-som.dtsi"
+#include "imx6qdl-dhcom-drc02.dtsi"
+
+/ {
+       model = "DH electronics i.MX6S DHCOM on DRC02";
+       compatible = "dh,imx6s-dhcom-drc02", "dh,imx6s-dhcom-som",
+                    "fsl,imx6dl";
+
+       cpus {
+               /delete-node/ cpu@1;
+       };
+};
index 8cbae65..89cbf13 100644 (file)
                device_type = "memory";
                reg = <0x80000000 0x40000000>;
        };
+
+       reg_brcm: regulator-brcm {
+               compatible = "regulator-fixed";
+               regulator-name = "brcm_reg";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_brcm_reg>;
+               gpio = <&gpio6 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <150>;
+       };
+
+       wifi_pwrseq: wifi_pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_wifi>;
+               reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+               clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
+               clock-names = "ext_clock";
+       };
 };
 
 &clks {
        status = "okay";
 };
 
+&usdhc2 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       vmmc-supply = <&reg_brcm>;
+       bus-width = <4>;
+       non-removable;
+       keep-power-in-suspend;
+       cap-power-off-card;
+       status = "okay";
+
+       brcmf: bcrmf@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
 &usdhc3 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
        pinctrl-0 = <&pinctrl_usdhc3>;
 };
 
 &iomuxc {
+       pinctrl_brcm_reg: brcmreggrp {
+               fsl,pins = <
+                       /* WIFI_PWR_EN */
+                       MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13       0x14
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX    0x79
                >;
        };
 
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX7D_PAD_SD2_CMD__SD2_CMD               0x59
+                       MX7D_PAD_SD2_CLK__SD2_CLK               0x19
+                       MX7D_PAD_SD2_DATA0__SD2_DATA0           0x59
+                       MX7D_PAD_SD2_DATA1__SD2_DATA1           0x59
+                       MX7D_PAD_SD2_DATA2__SD2_DATA2           0x59
+                       MX7D_PAD_SD2_DATA3__SD2_DATA3           0x59
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2grp_100mhz {
+               fsl,pins = <
+                       MX7D_PAD_SD2_CMD__SD2_CMD               0x5a
+                       MX7D_PAD_SD2_CLK__SD2_CLK               0x1a
+                       MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5a
+                       MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5a
+                       MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5a
+                       MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5a
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2grp_200mhz {
+               fsl,pins = <
+                       MX7D_PAD_SD2_CMD__SD2_CMD               0x5b
+                       MX7D_PAD_SD2_CLK__SD2_CLK               0x1b
+                       MX7D_PAD_SD2_DATA0__SD2_DATA0           0x5b
+                       MX7D_PAD_SD2_DATA1__SD2_DATA1           0x5b
+                       MX7D_PAD_SD2_DATA2__SD2_DATA2           0x5b
+                       MX7D_PAD_SD2_DATA3__SD2_DATA3           0x5b
+               >;
+       };
+
        pinctrl_usdhc3: usdhc3grp {
                fsl,pins = <
                        MX7D_PAD_SD3_CMD__SD3_CMD               0x59
                        MX7D_PAD_ENET1_COL__WDOG1_WDOG_ANY      0x74
                >;
        };
+
+       pinctrl_wifi: wifigrp {
+               fsl,pins = <
+                       /* WiFi Reg On */
+                       MX7D_PAD_SD2_CD_B__GPIO5_IO9            0x00000014
+                       /* WiFi Sleep 32k */
+                       MX7D_PAD_SD1_WP__CCM_CLKO2              0x00000014
+               >;
+       };
 };
index a22d41e..1843fc0 100644 (file)
                                status = "disabled";
                        };
 
+                       ftm1: pwm@30640000 {
+                               compatible = "fsl,vf610-ftm-pwm";
+                               reg = <0x30640000 0x10000>;
+                               #pwm-cells = <3>;
+                               interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-names = "ftm_sys", "ftm_ext",
+                               "ftm_fix", "ftm_cnt_clk_en";
+                               clocks = <&clks IMX7D_FLEXTIMER1_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER1_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER1_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER1_ROOT_CLK>;
+                               status = "disabled";
+                       };
+
+                       ftm2: pwm@30650000 {
+                               compatible = "fsl,vf610-ftm-pwm";
+                               reg = <0x30650000 0x10000>;
+                               #pwm-cells = <3>;
+                               interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+                               clock-names = "ftm_sys", "ftm_ext",
+                               "ftm_fix", "ftm_cnt_clk_en";
+                               clocks = <&clks IMX7D_FLEXTIMER2_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER2_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER2_ROOT_CLK>,
+                                       <&clks IMX7D_FLEXTIMER2_ROOT_CLK>;
+                               status = "disabled";
+                       };
+
                        pwm1: pwm@30660000 {
                                compatible = "fsl,imx7d-pwm", "fsl,imx27-pwm";
                                reg = <0x30660000 0x10000>;
index 1412a1a..0614f82 100644 (file)
@@ -29,7 +29,7 @@
                compatible = "arm,im-pd1-syscon", "syscon";
                reg = <0x00000000 0x1000>;
 
-               vco1: clock@00 {
+               vco1: vco1-clock {
                        compatible = "arm,impd1-vco1";
                        #clock-cells = <0>;
                        lock-offset = <0x08>;
@@ -38,7 +38,7 @@
                        clock-output-names = "IM-PD1-VCO1";
                };
 
-               vco2: clock@04 {
+               vco2: vco2-clock {
                        compatible = "arm,impd1-vco2";
                        #clock-cells = <0>;
                        lock-offset = <0x08>;
diff --git a/arch/arm/boot/dts/intel-ixp42x-adi-coyote.dts b/arch/arm/boot/dts/intel-ixp42x-adi-coyote.dts
new file mode 100644 (file)
index 0000000..44c017b
--- /dev/null
@@ -0,0 +1,110 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for ADI Engineering Coyote platform.
+ * Derived from boardfiles written by MontaVista software.
+ * Ethernet set-up from OpenWrt.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "ADI Engineering Coyote reference design";
+       compatible = "adieng,coyote", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* CHECKME: 16 MB SDRAM minimum, maybe the Coyote actually has more */
+               device_type = "memory";
+               reg = <0x00000000 0x01000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
+               stdout-path = "uart1:115200n8";
+       };
+
+       aliases {
+               /* These are switched around */
+               serial0 = &uart1;
+               serial1 = &uart0;
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 32 MB of Flash in 128 0x20000 sized blocks
+                                * mapped in at CS0 and CS1
+                                */
+                               reg = <0 0x00000000 0x2000000>;
+
+                               /* Configure expansion bus to allow writes */
+                               intel,ixp4xx-eb-write-enable = <1>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* CHECKME: guess this is Redboot FIS */
+                                       fis-index-block = <0x1ff>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from Coyote PCI boardfile.
+                        * We have slots (IDSEL) 1 and 2 with one assigned IRQ
+                        * each handling all IRQs.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 6 */
+                       <0x0800 0 0 2 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 6 */
+                       <0x0800 0 0 3 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 6 */
+                       <0x0800 0 0 4 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 6 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 11 */
+                       <0x1000 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 11 */
+                       <0x1000 0 0 3 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 11 */
+                       <0x1000 0 0 4 &gpio0 11 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 11 */
+               };
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy5>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy4: ethernet-phy@4 {
+                                       reg = <4>;
+                               };
+
+                               phy5: ethernet-phy@5 {
+                                       reg = <5>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy4>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-arcom-vulcan.dts b/arch/arm/boot/dts/intel-ixp42x-arcom-vulcan.dts
new file mode 100644 (file)
index 0000000..7200126
--- /dev/null
@@ -0,0 +1,167 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Arcom/Eurotech Vulcan board.
+ * This board is a single board computer in the PC/104 form factor based on
+ * IXP425, and was released around 2005. It previously had the name "Mercury".
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Arcom/Eurotech Vulcan";
+       compatible = "arcom,vulcan", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               /* CHECKME: using a harddrive at /dev/sda1 as rootfs by default */
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootfstype=ext4 rootwait";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       onewire {
+               compatible = "w1-gpio";
+               gpios = <&gpio0 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 32 MB of Flash in 0x20000 byte blocks
+                                * mapped in at CS0 and CS1.
+                                *
+                                * The documentation mentions the existence
+                                * of a 16MB version, which we conveniently
+                                * ignore. Shout if you own one!
+                                */
+                               reg = <0 0x00000000 0x2000000>;
+
+                               /* Expansion bus settings */
+                               intel,ixp4xx-eb-t3 = <3>;
+                               intel,ixp4xx-eb-byte-access-on-halfword = <1>;
+                               intel,ixp4xx-eb-write-enable = <1>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       fis-index-block = <0x1ff>;
+                               };
+                       };
+                       sram@2,0 {
+                               /* 256 KB SDRAM memory at CS2 */
+                               compatible = "shared-dma-pool";
+                               device_type = "memory";
+                               reg = <2 0x00000000 0x40000>;
+                               no-map;
+                               /* Expansion bus settings */
+                               intel,ixp4xx-eb-t3 = <1>;
+                               intel,ixp4xx-eb-t4 = <2>;
+                               intel,ixp4xx-eb-ahb-split-transfers = <1>;
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                       };
+                       serial@3,0 {
+                               /*
+                                * 8250-compatible Exar XR16L2551 2 x UART
+                                *
+                                * CHECKME: if special tweaks are needed, then fix the
+                                * operating system to handle it.
+                                */
+                               compatible = "exar,xr16l2551", "ns8250";
+                               reg = <3 0x00000000 0x10>;
+                               interrupt-parent = <&gpio0>;
+                               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+                               clock-frequency = <1843200>;
+                               /* Expansion bus settings */
+                               intel,ixp4xx-eb-t3 = <3>;
+                               intel,ixp4xx-eb-cycle-type = <1>; /* Motorola cycles */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                       };
+                       gpio1: gpio@4,0 {
+                               /*
+                                * MMIO GPIO in one byte
+                                */
+                               compatible = "arcom,vulcan-gpio";
+                               reg = <4 0x00000000 0x1>;
+                               /* Expansion bus settings */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                       };
+                       watchdog@5,0 {
+                               compatible = "maxim,max6369";
+                               reg = <5 0x00000000 0x1>;
+                               /* Expansion bus settings */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from Vulcan PCI boardfile.
+                        *
+                        * We have 2 slots (IDSEL) 1 and 2 with one dedicated interrupt
+                        * per slot. This interrupt is shared (OR:ed) by all four pins.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 2 */
+                       <0x0800 0 0 2 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 2 */
+                       <0x0800 0 0 3 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 2 */
+                       <0x0800 0 0 4 &gpio0 2 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 2 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 3 */
+                       <0x1000 0 0 2 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 3 */
+                       <0x1000 0 0 3 &gpio0 3 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 3 */
+                       <0x1000 0 0 4 &gpio0 3 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 3 */
+               };
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy0>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy0: ethernet-phy@0 {
+                                       reg = <0>;
+                               };
+
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy1>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts b/arch/arm/boot/dts/intel-ixp42x-dlink-dsm-g600.dts
new file mode 100644 (file)
index 0000000..8b32e9f
--- /dev/null
@@ -0,0 +1,145 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for D-Link DSM-G600 revision A based on IXP420
+ * NOTE: revision B of this device uses PowerPC and is NOT supported by
+ * this device tree.
+ *
+ * Inspired by the boardfile by Rod Whitby, Tower Technologies, Alessandro Zummo
+ * and Michael Westerhof.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "D-Link DSM-G600 rev A";
+       compatible = "dlink,dsm-g600-a", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 64 MB SDRAM */
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led-power {
+                       label = "dsmg600:green:power";
+                       gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+               led-wlan {
+                       label = "dsmg600:green:wlan";
+                       /* CHECKME: flagged as active low in the old board file */
+                       gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+                       /* We don't have WLAN trigger in the kernel (yet) */
+                       linux,default-trigger = "netdev";
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               button-reset {
+                       wakeup-source;
+                       linux,code = <KEY_ESC>;
+                       label = "reset";
+                       gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_keys_polled {
+               compatible = "gpio-keys-polled";
+
+               /*
+                * According to the board file this key cannot handle interrupts and
+                * need to be polled. Investigate if this is really the case or if
+                * this can be moved adjacent to the ordinary gpio-keys above.
+                */
+               button-power {
+                       wakeup-source;
+                       linux,code = <KEY_POWER>;
+                       label = "power";
+                       gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       i2c {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio0 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rtc@51 {
+                       compatible = "nxp,pcf8563";
+                       reg = <0x51>;
+               };
+       };
+
+       gpio-poweroff {
+               compatible = "gpio-poweroff";
+               gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
+               timeout-ms = <5000>;
+       };
+
+       soc {
+               bus@c4000000 {
+                       /* The first 16MB region at CS0 on the expansion bus */
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 16 MB of Flash in 128 0x20000 sized blocks
+                                * mapped in at CS0.
+                                */
+                               reg = <0 0x00000000 0x1000000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /*
+                                        * A boot log says the directory is at 0xfe0000
+                                        * 0x7f * 0x20000 = 0xfe0000
+                                        */
+                                       fis-index-block = <0x7f>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from DSM-G600 PCI boardfile (dsmg600-pci.c)
+                        * We have slots (IDSEL) 1, 2, 3, 4 and pins 1, 2 and 3.
+                        * Only slot 3 have three IRQs.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 7  IRQ_TYPE_LEVEL_LOW>, /* INT E on slot 1 is irq 7 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 11 */
+                       /* IDSEL 3 */
+                       <0x1800 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 10 */
+                       <0x1800 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 9 */
+                       <0x1800 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 8 */
+                       /* IDSEL 4 */
+                       <0x2000 0 0 3 &gpio0 6  IRQ_TYPE_LEVEL_LOW>; /* INT F on slot 4 is irq 6 */
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-freecom-fsg-3.dts b/arch/arm/boot/dts/intel-ixp42x-freecom-fsg-3.dts
new file mode 100644 (file)
index 0000000..77e78c6
--- /dev/null
@@ -0,0 +1,158 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Freecom FSG-3 router.
+ * This machine is based on IXP425.
+ * This device tree is inspired by the board file by Rod Whitby.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Freecom FSG-3";
+       compatible = "freecom,fsg-3", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 64 MB memory */
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               /* Boot from the first partition on the hard drive */
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootfstype=ext4 rootwait";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               button-sync {
+                       wakeup-source;
+                       /* Closest approximation of what the key should do */
+                       linux,code = <KEY_CONNECT>;
+                       label = "sync";
+                       gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
+               };
+               button-reset {
+                       wakeup-source;
+                       linux,code = <KEY_ESC>;
+                       label = "reset";
+                       gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+               };
+               button-usb {
+                       wakeup-source;
+                       /* Unplug USB, closest approximation of what the key should do */
+                       linux,code = <KEY_EJECTCD>;
+                       label = "usb";
+                       gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       i2c {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio0 12 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio0 13 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               hwmon@28 {
+                       /*
+                        * Temperature sensor and fan control chip.
+                        *
+                        * TODO: create a proper device tree binding for
+                        * the sensor and temperature zone and create a
+                        * zone with fan control.
+                        */
+                       compatible = "winbond,w83781d";
+                       reg = <0x28>;
+               };
+               rtc@6f {
+                       compatible = "isil,isl1208";
+                       reg = <0x6f>;
+               };
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 4 MB of Flash mapped in at CS0 */
+                               reg = <0 0x00000000 0x400000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x3e0000 */
+                                       fis-index-block = <0x1f>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Written based on the FSG-3 PCI boardfile.
+                        * We have slots 12, 13 & 14 (IDSEL) with one IRQ each.
+                        */
+                       interrupt-map =
+                       /* IDSEL 12 */
+                       <0x6000 0 0 1 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 12 is irq 5 */
+                       <0x6000 0 0 2 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 12 is irq 5 */
+                       <0x6000 0 0 3 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 12 is irq 5 */
+                       <0x6000 0 0 4 &gpio0 5 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 12 is irq 5 */
+                       /* IDSEL 13 */
+                       <0x6800 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 13 is irq 7 */
+                       <0x6800 0 0 2 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 13 is irq 7 */
+                       <0x6800 0 0 3 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 13 is irq 7 */
+                       <0x6800 0 0 4 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 13 is irq 7 */
+                       /* IDSEL 14 */
+                       <0x7000 0 0 1 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 14 is irq 6 */
+                       <0x7000 0 0 2 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 14 is irq 6 */
+                       <0x7000 0 0 3 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 14 is irq 6 */
+                       <0x7000 0 0 4 &gpio0 6 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 14 is irq 6 */
+               };
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy5>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy4: ethernet-phy@4 {
+                                       reg = <4>;
+                               };
+
+                               phy5: ethernet-phy@5 {
+                                       reg = <5>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy4>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-gateworks-gw2348.dts b/arch/arm/boot/dts/intel-ixp42x-gateworks-gw2348.dts
new file mode 100644 (file)
index 0000000..a20277f
--- /dev/null
@@ -0,0 +1,172 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Gateworks Avila GW2348 board.
+ * This machine is based on IXP425.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Gateworks Avila GW2348";
+       compatible = "gateworks,gw2348", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led-user {
+                       label = "gw2348:green:user";
+                       gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       i2c {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio0 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               hwmon@28 {
+                       compatible = "adi,ad7418";
+                       reg = <0x28>;
+               };
+               rtc: ds1672@68 {
+                       compatible = "dallas,ds1672";
+                       reg = <0x68>;
+               };
+               eeprom@51 {
+                       compatible = "atmel,24c08";
+                       reg = <0x51>;
+                       pagesize = <16>;
+                       size = <1024>;
+                       read-only;
+               };
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 16 MB of Flash mapped in at CS0 */
+                               reg = <0 0x00000000 0x1000000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x0fe0000 */
+                                       fis-index-block = <0x7f>;
+                               };
+                       };
+                       ide@1,0 {
+                               compatible = "intel,ixp4xx-compact-flash";
+                               /*
+                                * Set up expansion bus config to a really slow timing.
+                                * The CF driver will dynamically reconfigure these timings
+                                * depending on selected PIO mode (0-4).
+                                */
+                               intel,ixp4xx-eb-t1 = <3>; // 3 cycles extra address phase
+                               intel,ixp4xx-eb-t2 = <3>; // 3 cycles extra setup phase
+                               intel,ixp4xx-eb-t3 = <15>; // 15 cycles extra strobe phase
+                               intel,ixp4xx-eb-t4 = <3>; // 3 cycles extra hold phase
+                               intel,ixp4xx-eb-t5 = <15>; // 15 cycles extra recovery phase
+                               intel,ixp4xx-eb-cycle-type = <0>; // Intel cycle type
+                               intel,ixp4xx-eb-byte-access-on-halfword = <1>;
+                               intel,ixp4xx-eb-mux-address-and-data = <0>;
+                               intel,ixp4xx-eb-ahb-split-transfers = <0>;
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                               /* First register set is CMD second is CTL (notice it uses CS2) */
+                               reg = <1 0x00000000 0x1000000>, <2 0x00000000 0x1000000>;
+                               interrupt-parent = <&gpio0>;
+                               interrupts = <12 IRQ_TYPE_EDGE_RISING>;
+                       };
+                       /*
+                        * FIXME: Latch LEDs or extra UARTs at CS4
+                        */
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from Avila PCI boardfile.
+                        *
+                        * We have up to 4 slots (IDSEL) with 4 swizzled IRQs.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       <0x0800 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 10 */
+                       <0x0800 0 0 3 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 9 */
+                       <0x0800 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       <0x1000 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
+                       <0x1000 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 8 */
+                       <0x1000 0 0 4 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 2 is irq 11 */
+                       /* IDSEL 3 */
+                       <0x1800 0 0 1 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 9 */
+                       <0x1800 0 0 2 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 8 */
+                       <0x1800 0 0 3 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 11 */
+                       <0x1800 0 0 4 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 10 */
+                       /* IDSEL 4 */
+                       <0x2000 0 0 1 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 4 is irq 8 */
+                       <0x2000 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 4 is irq 11 */
+                       <0x2000 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 4 is irq 10 */
+                       <0x2000 0 0 4 &gpio0 9  IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 4 is irq 9 */
+               };
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy0>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy0: ethernet-phy@0 {
+                                       reg = <0>;
+                               };
+
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy1>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts b/arch/arm/boot/dts/intel-ixp42x-iomega-nas100d.dts
new file mode 100644 (file)
index 0000000..8c18d80
--- /dev/null
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for Iomega NAS 100D
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Iomega NAS 100D";
+       compatible = "iom,nas-100d", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 64 MB SDRAM */
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led-wlan {
+                       label = "nas100d:red:wlan";
+                       gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       /* We don't have WLAN trigger in the kernel (yet) */
+                       linux,default-trigger = "netdev";
+               };
+               led-disk {
+                       label = "nas100d:red:disk";
+                       gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       linux,default-trigger = "disk-activity";
+               };
+               led-power {
+                       label = "nas100d:red:power";
+                       gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               button-power {
+                       wakeup-source;
+                       linux,code = <KEY_POWER>;
+                       label = "power";
+                       gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+               };
+               button-reset {
+                       wakeup-source;
+                       linux,code = <KEY_ESC>;
+                       label = "reset";
+                       gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       i2c {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rtc@51 {
+                       compatible = "nxp,pcf8563";
+                       reg = <0x51>;
+               };
+       };
+
+       gpio-poweroff {
+               compatible = "gpio-poweroff";
+               gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               timeout-ms = <5000>;
+       };
+
+       soc {
+               bus@c4000000 {
+                       /* The first 16MB region at CS0 on the expansion bus */
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 8 MB of Flash in 0x20000 byte blocks
+                                * mapped in at CS0.
+                                */
+                               reg = <0 0x00000000 0x800000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x7e0000 */
+                                       fis-index-block = <0x3f>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from NAS 100D PCI boardfile (nas100d-pci.c)
+                        * We have slots (IDSEL) 1, 2 and 3 and pins 1, 2 and 3.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       /* IDSEL 3 */
+                       <0x1800 0 0 1 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 9 */
+                       <0x1800 0 0 2 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 8 */
+                       <0x1800 0 0 3 &gpio0 7  IRQ_TYPE_LEVEL_LOW>; /* INT C on slot 3 is irq 7 */
+               };
+
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy0>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy0: ethernet-phy@0 {
+                                       reg = <0>;
+                               };
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-ixdp425.dts b/arch/arm/boot/dts/intel-ixp42x-ixdp425.dts
new file mode 100644 (file)
index 0000000..beaadda
--- /dev/null
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Intel IXDP425 also known as IXCDP1100 Control Plane
+ * processor reference design.
+ *
+ * This platform has the codename "Richfield".
+ *
+ * This machine is based on a 533 MHz IXP425.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include "intel-ixp4xx-reference-design.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Intel IXDP425/IXCDP1100 Richfield Reference Design";
+       compatible = "intel,ixdp425", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 16 MB of Flash mapped in at CS0 */
+                               reg = <0 0x00000000 0x1000000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x0fe0000 */
+                                       fis-index-block = <0x7f>;
+                               };
+                       };
+               };
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy0>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy0: ethernet-phy@0 {
+                                       reg = <0>;
+                               };
+
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy1>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-ixdpg425.dts b/arch/arm/boot/dts/intel-ixp42x-ixdpg425.dts
new file mode 100644 (file)
index 0000000..002a870
--- /dev/null
@@ -0,0 +1,125 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Intel IXDPG425 reference design.
+ * Derived from boardfiles written by MontaVista software.
+ * Ethernet set-up from OpenWrt.
+ *
+ * The device has 4 x FXS RJ11 ports for analog phones for
+ * internet telephony. (Not supported yet.)
+ *
+ * The device has 9 status LEDs we do not support yet.
+ *
+ * This device is very similar to ADI engingeering Coyote.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Intel IXDPG425 reference design";
+       compatible = "intel,ixdpg425", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 32 MB SDRAM */
+               device_type = "memory";
+               reg = <0x00000000 0x02000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * CHECKME: the product brief says 16MB in a flash
+                                * socket.
+                                */
+                               reg = <0 0x00000000 0x1000000>;
+
+                               /* Configure expansion bus to allow writes */
+                               intel,ixp4xx-eb-write-enable = <1>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* CHECKME: guess this is Redboot FIS */
+                                       fis-index-block = <0x7f>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from IXDPG425 PCI boardfile.
+                        * We have slots (IDSEL) 12, 13 and 14 with one assigned IRQ
+                        * for 12 & 13 and one for 14.
+                        */
+                       interrupt-map =
+                       /* IDSEL 12 */
+                       <0x6000 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 12 is irq 7 */
+                       <0x6000 0 0 2 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 12 is irq 7 */
+                       <0x6000 0 0 3 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 12 is irq 7 */
+                       <0x6000 0 0 4 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 12 is irq 7 */
+                       /* IDSEL 13 */
+                       <0x6800 0 0 1 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 13 is irq 7 */
+                       <0x6800 0 0 2 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 13 is irq 7 */
+                       <0x6800 0 0 3 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 13 is irq 7 */
+                       <0x6800 0 0 4 &gpio0 7 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 13 is irq 7 */
+                       /* IDSEL 14 */
+                       <0x7000 0 0 1 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 14 is irq 6 */
+                       <0x7000 0 0 2 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 14 is irq 6 */
+                       <0x7000 0 0 3 &gpio0 6 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 14 is irq 6 */
+                       <0x7000 0 0 4 &gpio0 6 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 14 is irq 6 */
+               };
+
+               /*
+                * CHECKME: this ethernet setup seems dubious. Photos of the board shows some kind
+                * of Realtek DSA switch on the board.
+                */
+
+               /* EthB */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy5>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy4: ethernet-phy@4 {
+                                       reg = <4>;
+                               };
+
+                               phy5: ethernet-phy@5 {
+                                       reg = <5>;
+                               };
+                       };
+               };
+
+               /* EthC */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy4>;
+               };
+       };
+};
index 5b8dcc1..e3a32b0 100644 (file)
        };
 
        soc {
-               bus@50000000 {
+               bus@c4000000 {
                        /* The first 16MB region at CS0 on the expansion bus */
-                       flash@0 {
+                       flash@0,0 {
                                compatible = "intel,ixp4xx-flash", "cfi-flash";
                                bank-width = <2>;
                                /*
                                 * 8 MB of Flash in 0x20000 byte blocks
                                 * mapped in at CS0.
                                 */
-                               reg = <0x00000000 0x800000>;
+                               reg = <0 0x00000000 0x800000>;
 
                                partitions {
                                        compatible = "redboot-fis";
                         */
                        interrupt-map =
                        /* IDSEL 1 */
-                       <0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */
-                       <0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */
-                       <0x0800 0 0 3 &gpio0 9  3>, /* INT C on slot 1 is irq 9 */
-                       <0x0800 0 0 4 &gpio0 8  3>, /* INT D on slot 1 is irq 8 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       <0x0800 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 10 */
+                       <0x0800 0 0 3 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 9 */
+                       <0x0800 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
                        /* IDSEL 2 */
-                       <0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */
-                       <0x1000 0 0 2 &gpio0 9  3>, /* INT B on slot 2 is irq 9 */
-                       <0x1000 0 0 3 &gpio0 11 3>, /* INT C on slot 2 is irq 11 */
-                       <0x1000 0 0 4 &gpio0 8  3>, /* INT D on slot 2 is irq 8 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       <0x1000 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
+                       <0x1000 0 0 3 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 11 */
+                       <0x1000 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 2 is irq 8 */
                        /* IDSEL 3 */
-                       <0x1800 0 0 1 &gpio0 9  3>, /* INT A on slot 3 is irq 9 */
-                       <0x1800 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
-                       <0x1800 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
-                       <0x1800 0 0 4 &gpio0 8  3>; /* INT D on slot 3 is irq 8 */
+                       <0x1800 0 0 1 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 9 */
+                       <0x1800 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 11 */
+                       <0x1800 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 10 */
+                       <0x1800 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 3 is irq 8 */
                };
 
                ethernet@c8009000 {
diff --git a/arch/arm/boot/dts/intel-ixp42x-linksys-wrv54g.dts b/arch/arm/boot/dts/intel-ixp42x-linksys-wrv54g.dts
new file mode 100644 (file)
index 0000000..6b28dda
--- /dev/null
@@ -0,0 +1,173 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Linksys WRV54G router
+ * Also known as Gemtek GTWX5715
+ * Based on a board file by George T. Joseph and other patches.
+ * This machine is based on IXP425.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Linksys WRV54G / Gemtek GTWX5715";
+       compatible = "linksys,wrv54g", "gemtek,gtwx5715", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 32 MB memory */
+               device_type = "memory";
+               reg = <0x00000000 0x2000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+               stdout-path = "uart1:115200n8";
+       };
+
+       aliases {
+               /* UART2 is the primary console */
+               serial0 = &uart1;
+               serial1 = &uart0;
+       };
+
+       /* There is an unpopulated LED slot (3) connected to GPIO 8 */
+       leds {
+               compatible = "gpio-leds";
+               led-power {
+                       label = "wrv54g:yellow:power";
+                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+               led-wireless {
+                       label = "wrv54g:yellow:wireless";
+                       gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+               led-internet {
+                       label = "wrv54g:yellow:internet";
+                       gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+               led-dmz {
+                       label = "wrv54g:green:dmz";
+                       gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+       };
+
+       /* This set-up comes from an OpenWrt patch */
+       spi {
+               compatible = "spi-gpio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               sck-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
+               miso-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               mosi-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
+               cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+               num-chipselects = <1>;
+
+               switch@0 {
+                       compatible = "micrel,ks8995";
+                       reg = <0>;
+                       spi-max-frequency = <50000000>;
+               };
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 8 MB of Flash mapped in at CS0 */
+                               reg = <0 0x00000000 0x00800000>;
+
+                               partitions {
+                                       compatible = "fixed-partitions";
+                                       /*
+                                        * Partition info from a boot log
+                                        * CHECKME: not using redboot? FIS index 0x3f @7e00000?
+                                        */
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       partition@0 {
+                                               label = "boot";
+                                               reg = <0x0 0x140000>;
+                                               read-only;
+                                       };
+                                       partition@140000 {
+                                               label = "linux";
+                                               reg = <0x140000 0x100000>;
+                                               read-only;
+                                       };
+                                       partition@240000 {
+                                               label = "root";
+                                               reg = <0x240000 0x480000>;
+                                               read-write;
+                                       };
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * We have up to 2 slots (IDSEL) with 2 swizzled IRQs.
+                        * Derived from the GTWX5715 PCI boardfile.
+                        */
+                       interrupt-map =
+                       /* IDSEL 0 */
+                       <0x0000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 0 is irq 10 */
+                       <0x0000 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 0 is irq 11 */
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       <0x0800 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>; /* INT B on slot 1 is irq 10 */
+               };
+
+               /*
+                * EthB - connected to the KS8995 switch ports 1-4
+                * FIXME: the boardfile defines .phy_mask = 0x1e for this port to enable output to
+                * all four switch ports, also using an out of tree multiphy patch.
+                * Do we need a new binding and property for this?
+                */
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy4>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               /* Should be ports 1-4 on the KS8995 switch */
+                               phy4: ethernet-phy@4 {
+                                       reg = <4>;
+                               };
+
+                               /* Should be port 5 on the KS8995 switch */
+                               phy5: ethernet-phy@5 {
+                                       reg = <5>;
+                               };
+                       };
+               };
+
+               /* EthC - connected to KS8995 switch port 5 */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy5>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp42x-netgear-wg302v2.dts b/arch/arm/boot/dts/intel-ixp42x-netgear-wg302v2.dts
new file mode 100644 (file)
index 0000000..04a0f71
--- /dev/null
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for Netgear WG302v2 based on IXP422BB
+ * Derived from boardfiles written by Imre Kaloz
+ */
+
+/dts-v1/;
+
+#include "intel-ixp42x.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Netgear WG302 v2";
+       compatible = "netgear,wg302v2", "intel,ixp42x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       memory@0 {
+               /* 16 MB SDRAM according to OpenWrt database */
+               device_type = "memory";
+               reg = <0x00000000 0x01000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 root=/dev/sda1 rw rootwait";
+               stdout-path = "uart1:115200n8";
+       };
+
+       aliases {
+               /* These are switched around */
+               serial0 = &uart1;
+               serial1 = &uart0;
+       };
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 32 MB of Flash in 128 0x20000 sized blocks
+                                * mapped in at CS0 and CS1
+                                */
+                               reg = <0 0x00000000 0x2000000>;
+
+                               /* Configure expansion bus to allow writes */
+                               intel,ixp4xx-eb-write-enable = <1>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* CHECKME: guess this is Redboot FIS */
+                                       fis-index-block = <0xff>;
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from WG302 v2 PCI boardfile (wg302v2-pci.c)
+                        * We have slots (IDSEL) 1 and 2 with one assigned IRQ
+                        * each handling all IRQs.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 8 */
+                       <0x0800 0 0 2 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 8 */
+                       <0x0800 0 0 3 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 8 */
+                       <0x0800 0 0 4 &gpio0 8 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 9 */
+                       <0x1000 0 0 2 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
+                       <0x1000 0 0 3 &gpio0 9 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 9 */
+                       <0x1000 0 0 4 &gpio0 9 IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 2 is irq 9 */
+               };
+
+               ethernet@c8009000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 3>;
+                       queue-txready = <&qmgr 20>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy8>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy8: ethernet-phy@8 {
+                                       reg = <8>;
+                               };
+                       };
+               };
+       };
+};
index 8415850..f5846a5 100644 (file)
                serial0 = &uart0;
        };
 
-       flash@50000000 {
-               compatible = "intel,ixp4xx-flash", "cfi-flash";
-               bank-width = <2>;
-               /*
-                * 16 MB of Flash
-                */
-               reg = <0x50000000 0x1000000>;
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /*
+                                * 16 MB of Flash
+                                */
+                               reg = <0 0x00000000 0x1000000>;
 
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
+                               partitions {
+                                       compatible = "fixed-partitions";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
 
-                       partition@0 {
-                               label = "RedBoot";
-                               reg = <0x00000000 0x00080000>;
-                               read-only;
-                       };
-                       partition@80000 {
-                               label = "zImage";
-                               reg = <0x00080000 0x00100000>;
-                               read-only;
-                       };
-                       partition@180000 {
-                               label = "ramdisk";
-                               reg = <0x00180000 0x00300000>;
-                               read-only;
-                       };
-                       partition@480000 {
-                               label = "User";
-                               reg = <0x00480000 0x00b60000>;
-                               read-only;
-                       };
-                       partition@fe0000 {
-                               label = "FIS directory";
-                               reg = <0x00fe0000 0x001f000>;
-                               read-only;
-                       };
-                       partition@fff000 {
-                               label = "RedBoot config";
-                               reg = <0x00fff000 0x0001000>;
-                               read-only;
+                                       partition@0 {
+                                               label = "RedBoot";
+                                               reg = <0x00000000 0x00080000>;
+                                               read-only;
+                                       };
+                                       partition@80000 {
+                                               label = "zImage";
+                                               reg = <0x00080000 0x00100000>;
+                                               read-only;
+                                       };
+                                       partition@180000 {
+                                               label = "ramdisk";
+                                               reg = <0x00180000 0x00300000>;
+                                               read-only;
+                                       };
+                                       partition@480000 {
+                                               label = "User";
+                                               reg = <0x00480000 0x00b60000>;
+                                               read-only;
+                                       };
+                                       partition@fe0000 {
+                                               label = "FIS directory";
+                                               reg = <0x00fe0000 0x001f000>;
+                                               read-only;
+                                       };
+                                       partition@fff000 {
+                                               label = "RedBoot config";
+                                               reg = <0x00fff000 0x0001000>;
+                                               read-only;
+                                       };
+                               };
                        };
                };
        };
index 5fa063e..d0e0f8a 100644 (file)
@@ -7,6 +7,11 @@
 
 / {
        soc {
+               bus@c4000000 {
+                       compatible = "intel,ixp42x-expansion-bus-controller", "syscon";
+                       reg = <0xc4000000 0x28>;
+               };
+
                pci@c0000000 {
                        compatible = "intel,ixp42x-pci";
                };
index 60a1228..84e6aec 100644 (file)
        };
 
        soc {
-               bus@50000000 {
-                       flash@0 {
+               bus@c4000000 {
+                       flash@0,0 {
                                compatible = "intel,ixp4xx-flash", "cfi-flash";
                                bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
                                /*
                                 * 32 MB of Flash in 0x20000 byte blocks
-                                * mapped in at CS0.
+                                * mapped in at CS0 and CS1
                                 */
-                               reg = <0x00000000 0x2000000>;
+                               reg = <0 0x00000000 0x2000000>;
 
                                partitions {
                                        compatible = "redboot-fis";
                                        fis-index-block = <0xff>;
                                };
                        };
+                       ide@3,0 {
+                               compatible = "intel,ixp4xx-compact-flash";
+                               /*
+                                * Set up expansion bus config to a really slow timing.
+                                * The CF driver will dynamically reconfigure these timings
+                                * depending on selected PIO mode (0-4).
+                                */
+                               intel,ixp4xx-eb-t1 = <3>; // 3 cycles extra address phase
+                               intel,ixp4xx-eb-t2 = <3>; // 3 cycles extra setup phase
+                               intel,ixp4xx-eb-t3 = <15>; // 15 cycles extra strobe phase
+                               intel,ixp4xx-eb-t4 = <3>; // 3 cycles extra hold phase
+                               intel,ixp4xx-eb-t5 = <15>; // 15 cycles extra recovery phase
+                               intel,ixp4xx-eb-cycle-type = <0>; // Intel cycle type
+                               intel,ixp4xx-eb-byte-access-on-halfword = <1>;
+                               intel,ixp4xx-eb-mux-address-and-data = <0>;
+                               intel,ixp4xx-eb-ahb-split-transfers = <0>;
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+                               /* First register set is CMD second is CTL */
+                               reg = <3 0xe00000 0x40000>, <3 0xe40000 0x40000>;
+                               interrupt-parent = <&gpio0>;
+                               interrupts = <12 IRQ_TYPE_EDGE_RISING>;
+                       };
                };
 
                pci@c0000000 {
                         */
                        interrupt-map =
                        /* IDSEL 1 */
-                       <0x0800 0 0 1 &gpio0 11 3>, /* INT A on slot 1 is irq 11 */
-                       <0x0800 0 0 2 &gpio0 10 3>, /* INT B on slot 1 is irq 10 */
-                       <0x0800 0 0 3 &gpio0 9  3>, /* INT C on slot 1 is irq 9 */
-                       <0x0800 0 0 4 &gpio0 8  3>, /* INT D on slot 1 is irq 8 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       <0x0800 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 10 */
+                       <0x0800 0 0 3 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 9 */
+                       <0x0800 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
                        /* IDSEL 2 */
-                       <0x1000 0 0 1 &gpio0 10 3>, /* INT A on slot 2 is irq 10 */
-                       <0x1000 0 0 2 &gpio0 9  3>, /* INT B on slot 2 is irq 9 */
-                       <0x1000 0 0 3 &gpio0 8  3>, /* INT C on slot 2 is irq 8 */
-                       <0x1000 0 0 4 &gpio0 11 3>, /* INT D on slot 2 is irq 11 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       <0x1000 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
+                       <0x1000 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 8 */
+                       <0x1000 0 0 4 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 2 is irq 11 */
                        /* IDSEL 3 */
-                       <0x1800 0 0 1 &gpio0 9  3>, /* INT A on slot 3 is irq 9 */
-                       <0x1800 0 0 2 &gpio0 8  3>, /* INT B on slot 3 is irq 8 */
-                       <0x1800 0 0 3 &gpio0 11 3>, /* INT C on slot 3 is irq 11 */
-                       <0x1800 0 0 4 &gpio0 10 3>, /* INT D on slot 3 is irq 10 */
+                       <0x1800 0 0 1 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 9 */
+                       <0x1800 0 0 2 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 8 */
+                       <0x1800 0 0 3 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 11 */
+                       <0x1800 0 0 4 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 10 */
                        /* IDSEL 4 */
-                       <0x2000 0 0 1 &gpio0 8  3>, /* INT A on slot 3 is irq 8 */
-                       <0x2000 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
-                       <0x2000 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
-                       <0x2000 0 0 4 &gpio0 9  3>, /* INT D on slot 3 is irq 9 */
+                       <0x2000 0 0 1 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 8 */
+                       <0x2000 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 11 */
+                       <0x2000 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 10 */
+                       <0x2000 0 0 4 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 9 */
                        /* IDSEL 6 */
-                       <0x3000 0 0 1 &gpio0 10 3>, /* INT A on slot 3 is irq 10 */
-                       <0x3000 0 0 2 &gpio0 9  3>, /* INT B on slot 3 is irq 9 */
-                       <0x3000 0 0 3 &gpio0 8  3>, /* INT C on slot 3 is irq 8 */
-                       <0x3000 0 0 4 &gpio0 11 3>, /* INT D on slot 3 is irq 11 */
+                       <0x3000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 10 */
+                       <0x3000 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 9 */
+                       <0x3000 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 8 */
+                       <0x3000 0 0 4 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 11 */
                        /* IDSEL 15 */
-                       <0x7800 0 0 1 &gpio0 8  3>, /* INT A on slot 3 is irq 8 */
-                       <0x7800 0 0 2 &gpio0 11 3>, /* INT B on slot 3 is irq 11 */
-                       <0x7800 0 0 3 &gpio0 10 3>, /* INT C on slot 3 is irq 10 */
-                       <0x7800 0 0 4 &gpio0 9  3>; /* INT D on slot 3 is irq 9 */
+                       <0x7800 0 0 1 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 8 */
+                       <0x7800 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 11 */
+                       <0x7800 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 10 */
+                       <0x7800 0 0 4 &gpio0 9  IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 3 is irq 9 */
                };
 
                ethernet@c800a000 {
diff --git a/arch/arm/boot/dts/intel-ixp43x-kixrp435.dts b/arch/arm/boot/dts/intel-ixp43x-kixrp435.dts
new file mode 100644 (file)
index 0000000..3d7cfa1
--- /dev/null
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Intel KIXRP435 Control Plane
+ * processor reference design.
+ */
+
+/dts-v1/;
+
+#include "intel-ixp43x.dtsi"
+#include "intel-ixp4xx-reference-design.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Intel KIXRP435 Reference Design";
+       compatible = "intel,kixrp435", "intel,ixp43x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 16 MB of Flash mapped in at CS0 */
+                               reg = <0 0x00000000 0x1000000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x0fe0000 */
+                                       fis-index-block = <0x7f>;
+                               };
+                       };
+               };
+
+               /* CHECKME: ethernet set-up taken from Gateworks Cambria */
+               ethernet@c800a000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 4>;
+                       queue-txready = <&qmgr 21>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy1>;
+
+                       mdio {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               phy1: ethernet-phy@1 {
+                                       reg = <1>;
+                               };
+
+                               phy2: ethernet-phy@2 {
+                                       reg = <2>;
+                               };
+                       };
+               };
+
+               ethernet@c800c000 {
+                       status = "ok";
+                       queue-rx = <&qmgr 2>;
+                       queue-txready = <&qmgr 19>;
+                       phy-mode = "rgmii";
+                       phy-handle = <&phy2>;
+                       intel,npe-handle = <&npe 0>;
+               };
+       };
+};
index 1d0817c..60bf990 100644 (file)
@@ -8,6 +8,12 @@
 
 / {
        soc {
+               bus@c4000000 {
+                       compatible = "intel,ixp43x-expansion-bus-controller", "syscon";
+                       /* Uses at least up to 0x230 */
+                       reg = <0xc4000000 0x1000>;
+               };
+
                pci@c0000000 {
                        compatible = "intel,ixp43x-pci";
                };
index cce49e8..b6ff614 100644 (file)
@@ -9,6 +9,17 @@
 
 / {
        soc {
+               bus@c4000000 {
+                       compatible = "intel,ixp46x-expansion-bus-controller", "syscon";
+                       /* Uses at least up to 0x124 */
+                       reg = <0xc4000000 0x1000>;
+               };
+
+               rng@70002100 {
+                       compatible = "intel,ixp46x-rng";
+                       reg = <0x70002100 4>;
+               };
+
                interrupt-controller@c8003000 {
                        compatible = "intel,ixp43x-interrupt";
                };
diff --git a/arch/arm/boot/dts/intel-ixp46x-ixdp465.dts b/arch/arm/boot/dts/intel-ixp46x-ixdp465.dts
new file mode 100644 (file)
index 0000000..a062cd1
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree file for the Intel IXDP465 Control Plane processor reference
+ * design, codename "BMP".
+ */
+
+/dts-v1/;
+
+#include "intel-ixp45x-ixp46x.dtsi"
+#include "intel-ixp4xx-reference-design.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Intel IXDP465 BMP Reference Design";
+       compatible = "intel,ixdp465", "intel,ixp46x";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       soc {
+               bus@c4000000 {
+                       flash@0,0 {
+                               compatible = "intel,ixp4xx-flash", "cfi-flash";
+                               bank-width = <2>;
+                               /* Enable writes on the expansion bus */
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               /* 32 MB of Flash mapped in at CS0 and CS1 */
+                               reg = <0 0x00000000 0x2000000>;
+
+                               partitions {
+                                       compatible = "redboot-fis";
+                                       /* Eraseblock at 0x1fe0000 */
+                                       fis-index-block = <0xff>;
+                               };
+                       };
+               };
+               /* TODO: configure ethernet etc */
+       };
+};
diff --git a/arch/arm/boot/dts/intel-ixp4xx-reference-design.dtsi b/arch/arm/boot/dts/intel-ixp4xx-reference-design.dtsi
new file mode 100644 (file)
index 0000000..c1d9c49
--- /dev/null
@@ -0,0 +1,132 @@
+// SPDX-License-Identifier: ISC
+/*
+ * Device Tree include file for Intel reference designs for the
+ * XScale Network Processors in the IXP 4xx series. Common device
+ * set-up for IXDP425, IXCDP1100, KIXRP435 and IXDP465.
+ */
+
+/ {
+       memory@0 {
+               /*
+                * The board supports up to 256 MB of memory. Here we put in
+                * 64 MB and this may be modified by the boot loader.
+                */
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+               stdout-path = "uart0:115200n8";
+       };
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       i2c {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio0 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               eeprom@50 {
+                       /*
+                        * Philips PCF8582C-2T/03 512byte I2C EEPROM
+                        * should behave like an Atmel 24c04.
+                        */
+                       compatible = "atmel,24c04";
+                       reg = <0x50>;
+                       pagesize = <16>;
+                       size = <512>;
+                       read-only;
+               };
+       };
+
+       soc {
+               bus@c4000000 {
+                       /* Flash memory defined per-variant */
+                       nand-controller@3,0 {
+                               /* Some designs have a NAND on CS3 enable it here if present */
+                               status = "disabled";
+
+                               /*
+                                * gen_nand needs to be extended and documented to get
+                                * command byte = 1 and address byte = 2 from the device
+                                * tree.
+                                */
+                               compatible = "gen_nand";
+
+                               /* Expansion bus set-up */
+                               intel,ixp4xx-eb-t1 = <0>;
+                               intel,ixp4xx-eb-t2 = <0>;
+                               intel,ixp4xx-eb-t3 = <1>; // 1 cycle extra strobe phase
+                               intel,ixp4xx-eb-t4 = <0>;
+                               intel,ixp4xx-eb-t5 = <0>;
+                               intel,ixp4xx-eb-cycle-type = <0>; // Intel cycle type
+                               intel,ixp4xx-eb-byte-access-on-halfword = <0>;
+                               intel,ixp4xx-eb-mux-address-and-data = <0>;
+                               intel,ixp4xx-eb-ahb-split-transfers = <0>;
+                               intel,ixp4xx-eb-write-enable = <1>;
+                               intel,ixp4xx-eb-byte-access = <1>;
+
+                               /* 512 bytes memory window */
+                               reg = <3 0x00000000 0x200>;
+                               nand-on-flash-bbt;
+                               nand-ecc-mode = "soft_bch";
+                               nand-ecc-step-size = <512>;
+                               nand-ecc-strength = <4>;
+                               nce-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; /* NCE */
+
+                               label = "ixp400 NAND";
+
+                               partitions {
+                                       compatible = "fixed-partitions";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       fs@0 {
+                                               label = "ixp400 NAND FS 0";
+                                               reg = <0x0 0x800000>;
+                                       };
+                                       fs@800000 {
+                                               label = "ixp400 NAND FS 1";
+                                               reg = <0x800000 0x0>;
+                                       };
+                               };
+                       };
+               };
+
+               pci@c0000000 {
+                       status = "ok";
+
+                       /*
+                        * Taken from IXDP425 PCI boardfile.
+                        * PCI slots on the BIXMB425BD base card.
+                        * We have up to 4 slots (IDSEL) with 4 swizzled IRQs.
+                        */
+                       interrupt-map =
+                       /* IDSEL 1 */
+                       <0x0800 0 0 1 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 1 is irq 11 */
+                       <0x0800 0 0 2 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 1 is irq 10 */
+                       <0x0800 0 0 3 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 1 is irq 9 */
+                       <0x0800 0 0 4 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 1 is irq 8 */
+                       /* IDSEL 2 */
+                       <0x1000 0 0 1 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 2 is irq 10 */
+                       <0x1000 0 0 2 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 2 is irq 9 */
+                       <0x1000 0 0 3 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 2 is irq 8 */
+                       <0x1000 0 0 4 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 2 is irq 11 */
+                       /* IDSEL 3 */
+                       <0x1800 0 0 1 &gpio0 9  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 3 is irq 9 */
+                       <0x1800 0 0 2 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 3 is irq 8 */
+                       <0x1800 0 0 3 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 3 is irq 11 */
+                       <0x1800 0 0 4 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT D on slot 3 is irq 10 */
+                       /* IDSEL 4 */
+                       <0x2000 0 0 1 &gpio0 8  IRQ_TYPE_LEVEL_LOW>, /* INT A on slot 4 is irq 8 */
+                       <0x2000 0 0 2 &gpio0 11 IRQ_TYPE_LEVEL_LOW>, /* INT B on slot 4 is irq 11 */
+                       <0x2000 0 0 3 &gpio0 10 IRQ_TYPE_LEVEL_LOW>, /* INT C on slot 4 is irq 10 */
+                       <0x2000 0 0 4 &gpio0 9  IRQ_TYPE_LEVEL_LOW>; /* INT D on slot 4 is irq 9 */
+               };
+       };
+};
index a50427a..e5af2d4 100644 (file)
                interrupt-parent = <&intcon>;
 
                /*
-                * The IXP4xx expansion bus is a set of 16 or 32MB
-                * windows in the 256MB space from 0x50000000 to
-                * 0x5fffffff.
+                * The IXP4xx expansion bus is a set of up to 7 each up to 16MB
+                * windows in the 256MB space from 0x50000000 to 0x5fffffff.
                 */
-               bus@50000000 {
-                       compatible = "simple-bus";
-                       #address-cells = <1>;
+               bus@c4000000 {
+                       /* compatible and reg filled in by per-soc device tree */
+                       native-endian;
+                       #address-cells = <2>;
                        #size-cells = <1>;
-                       ranges = <0x00000000 0x50000000 0x10000000>;
-                       dma-ranges = <0x00000000 0x50000000 0x10000000>;
+                       ranges = <0 0x0 0x50000000 0x01000000>,
+                                <1 0x0 0x51000000 0x01000000>,
+                                <2 0x0 0x52000000 0x01000000>,
+                                <3 0x0 0x53000000 0x01000000>,
+                                <4 0x0 0x54000000 0x01000000>,
+                                <5 0x0 0x55000000 0x01000000>,
+                                <6 0x0 0x56000000 0x01000000>,
+                                <7 0x0 0x57000000 0x01000000>;
+                       dma-ranges = <0 0x0 0x50000000 0x01000000>,
+                                <1 0x0 0x51000000 0x01000000>,
+                                <2 0x0 0x52000000 0x01000000>,
+                                <3 0x0 0x53000000 0x01000000>,
+                                <4 0x0 0x54000000 0x01000000>,
+                                <5 0x0 0x55000000 0x01000000>,
+                                <6 0x0 0x56000000 0x01000000>,
+                                <7 0x0 0x57000000 0x01000000>;
                };
 
                qmgr: queue-manager@60000000 {
                        no-loopback-test;
                };
 
+               uart1: serial@c8001000 {
+                       compatible = "intel,xscale-uart";
+                       reg = <0xc8001000 0x1000>;
+                       /*
+                        * The reg-offset and reg-shift is a side effect
+                        * of running the platform in big endian mode.
+                        */
+                       reg-offset = <3>;
+                       reg-shift = <2>;
+                       interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
+                       clock-frequency = <14745600>;
+                       no-loopback-test;
+               };
+
                gpio0: gpio@c8004000 {
                        compatible = "intel,ixp4xx-gpio";
                        reg = <0xc8004000 0x1000>;
index ad15e77..7106448 100644 (file)
@@ -95,7 +95,7 @@ qmss: qmss@2a40000 {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
-               pdsp0@0x2a10000 {
+               pdsp0@2a10000 {
                        reg = <0x2a10000 0x1000    /*iram */
                               0x2a0f000 0x100     /*reg*/
                               0x2a0c000 0x3c8     /*intd */
index d5a6c1f..022d93c 100644 (file)
@@ -112,7 +112,7 @@ qmss: qmss@2a40000 {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
-               pdsp0@0x2a10000 {
+               pdsp0@2a10000 {
                        reg = <0x2a10000 0x1000    /*iram */
                               0x2a0f000 0x100     /*reg*/
                               0x2a0c000 0x3c8     /*intd */
index c1f9826..e96ca66 100644 (file)
@@ -94,7 +94,7 @@ qmss: qmss@2a40000 {
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
-               pdsp0@0x2a10000 {
+               pdsp0@2a10000 {
                        reg = <0x2a10000 0x1000    /*iram */
                               0x2a0f000 0x100     /*reg*/
                               0x2a0c000 0x3c8     /*intd */
index bd0e864..3be7cba 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/sound/meson-aiu.h>
 
 / {
        #address-cells = <1>;
                                reg = <0x4000 0x400>;
                        };
 
+                       aiu: audio-controller@5400 {
+                               compatible = "amlogic,aiu";
+                               #sound-dai-cells = <2>;
+                               sound-name-prefix = "AIU";
+                               reg = <0x5400 0x2ac>;
+                               interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>,
+                                            <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
+                               interrupt-names = "i2s", "spdif";
+                               status = "disabled";
+                       };
+
                        assist: assist@7c00 {
                                compatible = "amlogic,meson-mx-assist", "syscon";
                                reg = <0x7c00 0x200>;
index 157a950..f80ddc9 100644 (file)
                                          "pp2", "ppmmu2", "pp4", "ppmmu4",
                                          "pp5", "ppmmu5", "pp6", "ppmmu6";
                        resets = <&reset RESET_MALI>;
+
                        clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
                        clock-names = "bus", "core";
+
+                       assigned-clocks = <&clkc CLKID_MALI>;
+                       assigned-clock-rates = <318750000>;
+
                        operating-points-v2 = <&gpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
                };
        };
 }; /* end of / */
 
+&aiu {
+       compatible = "amlogic,aiu-meson8", "amlogic,aiu";
+       clocks = <&clkc CLKID_AIU_GLUE>,
+                <&clkc CLKID_I2S_OUT>,
+                <&clkc CLKID_AOCLK_GATE>,
+                <&clkc CLKID_CTS_AMCLK>,
+                <&clkc CLKID_MIXER_IFACE>,
+                <&clkc CLKID_IEC958>,
+                <&clkc CLKID_IEC958_GATE>,
+                <&clkc CLKID_CTS_MCLK_I958>,
+                <&clkc CLKID_CTS_I958>;
+       clock-names = "pclk",
+                     "i2s_pclk",
+                     "i2s_aoclk",
+                     "i2s_mclk",
+                     "i2s_mixer",
+                     "spdif_pclk",
+                     "spdif_aoclk",
+                     "spdif_mclk",
+                     "spdif_mclk_sel";
+       resets = <&reset RESET_AIU>;
+};
+
 &aobus {
        pmu: pmu@e0 {
                compatible = "amlogic,meson8-pmu", "syscon";
                        gpio-ranges = <&pinctrl_aobus 0 0 16>;
                };
 
+               i2s_am_clk_pins: i2s-am-clk-out {
+                       mux {
+                               groups = "i2s_am_clk_out_ao";
+                               function = "i2s_ao";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_ao_clk_pins: i2s-ao-clk-out {
+                       mux {
+                               groups = "i2s_ao_clk_out_ao";
+                               function = "i2s_ao";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_lr_clk_pins: i2s-lr-clk-out {
+                       mux {
+                               groups = "i2s_lr_clk_out_ao";
+                               function = "i2s_ao";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_ch01_ao_pins: i2s-out-ch01 {
+                       mux {
+                               groups = "i2s_out_ch01_ao";
+                               function = "i2s_ao";
+                               bias-disable;
+                       };
+               };
+
                uart_ao_a_pins: uart_ao_a {
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                        };
                };
 
+               spdif_out_pins: spdif-out {
+                       mux {
+                               groups = "spdif_out";
+                               function = "spdif";
+                               bias-disable;
+                       };
+               };
+
                spi_nor_pins: nor {
                        mux {
                                groups = "nor_d", "nor_q", "nor_c", "nor_cs";
index 8e48ccc..77d4bee 100644 (file)
                #clock-cells = <0>;
        };
 
+       sound {
+               compatible = "amlogic,gx-sound-card";
+               model = "M8B-EC100";
+
+               assigned-clocks = <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>,
+                                 <&clkc CLKID_MPLL2>;
+               assigned-clock-rates = <270950400>,
+                                      <294912000>,
+                                      <393216000>;
+
+               dai-link-0 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&rt5640>;
+                       };
+               };
+       };
+
        usb_vbus: regulator-usb-vbus {
                /*
                 * Silergy SY6288CCAC-GP 2A Power Distribution Switch.
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
-               vin-supply = <&vcc_5v>;
+               pwm-supply = <&vcc_5v>;
 
                pwms = <&pwm_cd 0 1148 0>;
                pwm-dutycycle-range = <100 0>;
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
-               vin-supply = <&vcc_5v>;
+               pwm-supply = <&vcc_5v>;
 
                pwms = <&pwm_cd 1 1148 0>;
                pwm-dutycycle-range = <100 0>;
        };
 };
 
+&aiu {
+       status = "okay";
+
+       pinctrl-0 = <&i2s_am_clk_pins>, <&i2s_out_ao_clk_pins>,
+                   <&i2s_out_lr_clk_pins>, <&i2s_out_ch01_ao_pins>;
+       pinctrl-names = "default";
+};
+
 &cpu0 {
        cpu-supply = <&vcck>;
 };
 
        rt5640: codec@1c {
                compatible = "realtek,rt5640";
+
                reg = <0x1c>;
+
+               #sound-dai-cells = <0>;
+
                interrupt-parent = <&gpio_intc>;
                interrupts = <13 IRQ_TYPE_EDGE_BOTH>; /* GPIOAO_13 */
+
+               /*
+                * TODO: realtek,ldo1-en-gpios is connected to GPIO_BSD_EN.
+                * We currently cannot configure this pin correctly.
+                * Luckily for us it's in the "right" state by default.
+                */
                realtek,in1-differential;
        };
 };
index f3937d5..7adedd3 100644 (file)
@@ -34,6 +34,8 @@
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
+               pwm-supply = <&vcc_5v>;
+
                pwms = <&pwm_cd 0 1148 0>;
                pwm-dutycycle-range = <100 0>;
 
@@ -79,7 +81,7 @@
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
-               vin-supply = <&vcc_5v>;
+               pwm-supply = <&vcc_5v>;
 
                pwms = <&pwm_cd 1 1148 0>;
                pwm-dutycycle-range = <100 0>;
index c440ef9..04356bc 100644 (file)
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
-               vin-supply = <&p5v0>;
+               pwm-supply = <&p5v0>;
 
                pwms = <&pwm_cd 0 12218 0>;
                pwm-dutycycle-range = <91 0>;
                regulator-min-microvolt = <860000>;
                regulator-max-microvolt = <1140000>;
 
-               vin-supply = <&p5v0>;
+               pwm-supply = <&p5v0>;
 
                pwms = <&pwm_cd 1 12218 0>;
                pwm-dutycycle-range = <91 0>;
index c02b03c..b49b7cb 100644 (file)
        };
 }; /* end of / */
 
+&aiu {
+       compatible = "amlogic,aiu-meson8b", "amlogic,aiu";
+       clocks = <&clkc CLKID_AIU_GLUE>,
+                <&clkc CLKID_I2S_OUT>,
+                <&clkc CLKID_AOCLK_GATE>,
+                <&clkc CLKID_CTS_AMCLK>,
+                <&clkc CLKID_MIXER_IFACE>,
+                <&clkc CLKID_IEC958>,
+                <&clkc CLKID_IEC958_GATE>,
+                <&clkc CLKID_CTS_MCLK_I958>,
+                <&clkc CLKID_CTS_I958>;
+       clock-names = "pclk",
+                     "i2s_pclk",
+                     "i2s_aoclk",
+                     "i2s_mclk",
+                     "i2s_mixer",
+                     "spdif_pclk",
+                     "spdif_aoclk",
+                     "spdif_mclk",
+                     "spdif_mclk_sel";
+       resets = <&reset RESET_AIU>;
+};
+
 &aobus {
        pmu: pmu@e0 {
                compatible = "amlogic,meson8b-pmu", "syscon";
                        gpio-ranges = <&pinctrl_aobus 0 0 16>;
                };
 
+               i2s_am_clk_pins: i2s-am-clk-out {
+                       mux {
+                               groups = "i2s_am_clk_out";
+                               function = "i2s";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_ao_clk_pins: i2s-ao-clk-out {
+                       mux {
+                               groups = "i2s_ao_clk_out";
+                               function = "i2s";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_lr_clk_pins: i2s-lr-clk-out {
+                       mux {
+                               groups = "i2s_lr_clk_out";
+                               function = "i2s";
+                               bias-disable;
+                       };
+               };
+
+               i2s_out_ch01_ao_pins: i2s-out-ch01 {
+                       mux {
+                               groups = "i2s_out_01";
+                               function = "i2s";
+                               bias-disable;
+                       };
+               };
+
+               spdif_out_1_pins: spdif-out-1 {
+                       mux {
+                               groups = "spdif_out_1";
+                               function = "spdif_1";
+                               bias-disable;
+                       };
+               };
+
                uart_ao_a_pins: uart_ao_a {
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
index 3c11f7c..a7d62db 100644 (file)
 
                                trips {
                                        cpu_passive: cpu-passive {
-                                               temperature = <47000>;
+                                               temperature = <57000>;
                                                hysteresis = <2000>;
                                                type = "passive";
                                        };
index dea3dbc..0334641 100644 (file)
                                label = "rootfs";
                                reg = <0x0600000 0x700000>;
                                };
-                       spare1@D00000 {
+                       spare1@d00000 {
                                label = "spare1";
                                reg = <0x0D00000 0x200000>;
                                };
-                       spare2@0F00000 {
+                       spare2@f00000 {
                                label = "spare2";
                                reg = <0x0F00000 0x200000>;
                                };
index a9573d4..7ae8b62 100644 (file)
                };
 
                target-module@28000 {                   /* 0x40128000, ap 8 08.0 */
+                                                       /* 0x4012a000, ap 10 0a.0 */
                        compatible = "ti,sysc-mcasp", "ti,sysc";
                        reg = <0x28000 0x4>,
                              <0x28004 0x4>;
                        reg-names = "rev", "sysc";
                        ti,sysc-sidle = <SYSC_IDLE_FORCE>,
                                        <SYSC_IDLE_NO>,
-                                       <SYSC_IDLE_SMART>,
-                                       <SYSC_IDLE_SMART_WKUP>;
+                                       <SYSC_IDLE_SMART>;
                        /* Domains (V, P, C): iva, abe_pwrdm, abe_clkdm */
                        clocks = <&abe_clkctrl OMAP4_MCASP_CLKCTRL 0>;
                        clock-names = "fck";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x0 0x28000 0x1000>,
-                                <0x49028000 0x49028000 0x1000>;
-
-                       /*
-                        * Child device unsupported by davinci-mcasp. At least
-                        * RX path is disabled for omap4, and only DIT mode
-                        * works with no I2S. See also old Android kernel
-                        * omap-mcasp driver for more information.
-                        */
-               };
-
-               target-module@2a000 {                   /* 0x4012a000, ap 10 0a.0 */
-                       compatible = "ti,sysc";
-                       status = "disabled";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x0 0x2a000 0x1000>,
+                                <0x49028000 0x49028000 0x1000>,
+                                <0x2000 0x2a000 0x1000>,
                                 <0x4902a000 0x4902a000 0x1000>;
+
+                       mcasp0: mcasp@0 {
+                               compatible = "ti,omap4-mcasp-audio";
+                               reg = <0x0 0x2000>,
+                                     <0x4902a000 0x1000>;      /* L3 data port */
+                               reg-names = "mpu","dat";
+                               interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "tx";
+                               dmas = <&sdma 8>;
+                               dma-names = "tx";
+                               clocks = <&abe_clkctrl OMAP4_MCASP_CLKCTRL 0>;
+                               clock-names = "fck";
+                               op-mode = <1>;  /* MCASP_DIT_MODE */
+                               serial-dir = < 1 >; /* 1 TX serializers */
+                               status = "disabled";
+                       };
                };
 
                target-module@2e000 {                   /* 0x4012e000, ap 12 0c.0 */
index b8c5db2..eb555f3 100644 (file)
                        bias-pull-down;
                };
        };
+
+       ethernet_pins: ethernet-pins {
+               eth_rmii-pinmux {
+                       groups = "rmii_txd0_mfp", "rmii_txd1_mfp",
+                                "rmii_rxd0_mfp", "rmii_rxd1_mfp",
+                                "rmii_txen_mfp", "rmii_rxen_mfp",
+                                "rmii_crs_dv_mfp", "rmii_ref_clk_mfp";
+                       function = "eth_rmii";
+               };
+
+               phy_clk-pinmux {
+                       groups = "clko_25m_mfp";
+                       function = "clko_25m";
+               };
+
+               ref_clk-pinconf {
+                       groups = "rmii_ref_clk_drv";
+                       drive-strength = <2>;
+               };
+
+       };
 };
 
 /* uSD */
        vqmmc-supply = <&sd_vcc>;
 };
 
+&ethernet {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ethernet_pins>;
+       phy-mode = "rmii";
+       phy-handle = <&eth_phy>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reset-gpios = <&pinctrl 88 GPIO_ACTIVE_LOW>; /* GPIOC24 */
+               reset-delay-us = <10000>;
+               reset-post-delay-us = <150000>;
+
+               eth_phy: ethernet-phy@3 {
+                       reg = <0x3>;
+                       max-speed = <100>;
+                       interrupt-parent = <&sirq>;
+                       interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               };
+       };
+};
+
 &twd_timer {
        status = "okay";
 };
index cd635f2..739b4b9 100644 (file)
                        dma-names = "mmc";
                        status = "disabled";
                };
+
+               ethernet: ethernet@b0310000 {
+                       compatible = "actions,s500-emac", "actions,owl-emac";
+                       reg = <0xb0310000 0x10000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cmu CLK_ETHERNET>, <&cmu CLK_RMII_REF>;
+                       clock-names = "eth", "rmii";
+                       resets = <&cmu RESET_ETHERNET>;
+                       status = "disabled";
+               };
        };
 };
index 0a4ffd1..e1189e9 100644 (file)
@@ -1,25 +1,4 @@
-/*
- * Copyright 2016 Linaro Ltd
- *
- * 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 BSD-2-Clause)
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
index 2687c4e..0b2bed6 100644 (file)
                                        #size-cells = <0>;
                                        #io-channel-cells = <2>;
 
-                                       vcoin: adc-channel@00 {
+                                       vcoin: adc-channel@0 {
                                                reg = <0x00 0x00>;
                                        };
-                                       vbat: adc-channel@01 {
+                                       vbat: adc-channel@1 {
                                                reg = <0x00 0x01>;
                                        };
-                                       dcin: adc-channel@02 {
+                                       dcin: adc-channel@2 {
                                                reg = <0x00 0x02>;
                                        };
-                                       vph_pwr: adc-channel@04 {
+                                       vph_pwr: adc-channel@4 {
                                                reg = <0x00 0x04>;
                                        };
-                                       batt_therm: adc-channel@08 {
+                                       batt_therm: adc-channel@8 {
                                                reg = <0x00 0x08>;
                                        };
-                                       batt_id: adc-channel@09 {
+                                       batt_id: adc-channel@9 {
                                                reg = <0x00 0x09>;
                                        };
-                                       usb_vbus: adc-channel@0a {
+                                       usb_vbus: adc-channel@a {
                                                reg = <0x00 0x0a>;
                                        };
-                                       die_temp: adc-channel@0b {
+                                       die_temp: adc-channel@b {
                                                reg = <0x00 0x0b>;
                                        };
-                                       ref_625mv: adc-channel@0c {
+                                       ref_625mv: adc-channel@c {
                                                reg = <0x00 0x0c>;
                                        };
-                                       ref_1250mv: adc-channel@0d {
+                                       ref_1250mv: adc-channel@d {
                                                reg = <0x00 0x0d>;
                                        };
-                                       chg_temp: adc-channel@0e {
+                                       chg_temp: adc-channel@e {
                                                reg = <0x00 0x0e>;
                                        };
-                                       ref_muxoff: adc-channel@0f {
+                                       ref_muxoff: adc-channel@f {
                                                reg = <0x00 0x0f>;
                                        };
                                };
                                <&mmcc DSI1_BYTE_CLK>,
                                <&mmcc DSI_PIXEL_CLK>,
                                <&mmcc DSI1_ESC_CLK>;
-                       clock-names = "iface_clk", "bus_clk", "core_mmss_clk",
-                                       "src_clk", "byte_clk", "pixel_clk",
-                                       "core_clk";
+                       clock-names = "iface", "bus", "core_mmss",
+                                       "src", "byte", "pixel",
+                                       "core";
 
                        assigned-clocks = <&mmcc DSI1_BYTE_SRC>,
                                        <&mmcc DSI1_ESC_SRC>,
index 7bcf5ef..4139d38 100644 (file)
                        clocks = <&gcc GMAC_CORE1_CLK>;
                        clock-names = "stmmaceth";
 
-                       resets = <&gcc GMAC_CORE1_RESET>;
-                       reset-names = "stmmaceth";
+                       resets = <&gcc GMAC_CORE1_RESET>,
+                                <&gcc GMAC_AHB_RESET>;
+                       reset-names = "stmmaceth", "ahb";
 
                        status = "disabled";
                };
                        clocks = <&gcc GMAC_CORE2_CLK>;
                        clock-names = "stmmaceth";
 
-                       resets = <&gcc GMAC_CORE2_RESET>;
-                       reset-names = "stmmaceth";
+                       resets = <&gcc GMAC_CORE2_RESET>,
+                                <&gcc GMAC_AHB_RESET>;
+                       reset-names = "stmmaceth", "ahb";
 
                        status = "disabled";
                };
                        clocks = <&gcc GMAC_CORE3_CLK>;
                        clock-names = "stmmaceth";
 
-                       resets = <&gcc GMAC_CORE3_RESET>;
-                       reset-names = "stmmaceth";
+                       resets = <&gcc GMAC_CORE3_RESET>,
+                                <&gcc GMAC_AHB_RESET>;
+                       reset-names = "stmmaceth", "ahb";
 
                        status = "disabled";
                };
                        clocks = <&gcc GMAC_CORE4_CLK>;
                        clock-names = "stmmaceth";
 
-                       resets = <&gcc GMAC_CORE4_RESET>;
-                       reset-names = "stmmaceth";
+                       resets = <&gcc GMAC_CORE4_RESET>,
+                                <&gcc GMAC_AHB_RESET>;
+                       reset-names = "stmmaceth", "ahb";
 
                        status = "disabled";
                };
diff --git a/arch/arm/boot/dts/qcom-msm8226-samsung-s3ve3g.dts b/arch/arm/boot/dts/qcom-msm8226-samsung-s3ve3g.dts
new file mode 100644 (file)
index 0000000..d159188
--- /dev/null
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, The Linux Foundation. All rights reserved.
+ */
+
+#include "qcom-msm8226.dtsi"
+
+/ {
+       model = "Samsung Galaxy S III Neo";
+       compatible = "samsung,s3ve3g", "qcom,msm8226";
+
+       aliases {
+               serial0 = &blsp1_uart3;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&soc {
+       serial@f991f000 {
+               status = "ok";
+       };
+};
diff --git a/arch/arm/boot/dts/qcom-msm8226.dtsi b/arch/arm/boot/dts/qcom-msm8226.dtsi
new file mode 100644 (file)
index 0000000..2de69d5
--- /dev/null
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, The Linux Foundation. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,gcc-msm8974.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+       interrupt-parent = <&intc>;
+
+       chosen { };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0>;
+       };
+
+       soc: soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               intc: interrupt-controller@f9000000 {
+                       compatible = "qcom,msm-qgic2";
+                       reg = <0xf9000000 0x1000>,
+                             <0xf9002000 0x1000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+               };
+
+               gcc: clock-controller@fc400000 {
+                       compatible = "qcom,gcc-msm8226";
+                       reg = <0xfc400000 0x4000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               tlmm: pinctrl@fd510000 {
+                       compatible = "qcom,msm8226-pinctrl";
+                       reg = <0xfd510000 0x4000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&tlmm 0 0 117>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               blsp1_uart3: serial@f991f000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0xf991f000 0x1000>;
+                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       status = "disabled";
+               };
+
+               restart@fc4ab000 {
+                       compatible = "qcom,pshold";
+                       reg = <0xfc4ab000 0x4>;
+               };
+
+               rng@f9bff000 {
+                       compatible = "qcom,prng";
+                       reg = <0xf9bff000 0x200>;
+                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
+                       clock-names = "core";
+               };
+
+               timer@f9020000 {
+                       compatible = "arm,armv7-timer-mem";
+                       reg = <0xf9020000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       frame@f9021000 {
+                               frame-number = <0>;
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9021000 0x1000>,
+                                     <0xf9022000 0x1000>;
+                       };
+
+                       frame@f9023000 {
+                               frame-number = <1>;
+                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9023000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f9024000 {
+                               frame-number = <2>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9024000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f9025000 {
+                               frame-number = <3>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9025000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f9026000 {
+                               frame-number = <4>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9026000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f9027000 {
+                               frame-number = <5>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9027000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f9028000 {
+                               frame-number = <6>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0xf9028000 0x1000>;
+                               status = "disabled";
+                       };
+               };
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 2
+                               (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 3
+                               (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 4
+                               (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 1
+                               (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
index d737de7..003f0fa 100644 (file)
        };
 
        /delete-node/ vreg-boost;
+
+       adsp-pil {
+               cx-supply = <&pma8084_s2>;
+       };
 };
 
 &soc {
                        vddio-supply = <&pma8084_l12>;
                };
        };
+
+       remoteproc@fc880000 {
+               cx-supply = <&pma8084_s2>;
+               mss-supply = <&pma8084_s6>;
+               mx-supply = <&pma8084_s1>;
+               pll-supply = <&pma8084_l12>;
+       };
 };
 
 &spmi_bus {
index f4ec08f..b4dd85b 100644 (file)
@@ -11,6 +11,7 @@
 
        aliases {
                serial0 = &blsp1_uart2;
+               serial1 = &blsp2_uart7;
        };
 
        chosen {
                pinctrl-0 = <&blsp1_uart2_pin_a>;
        };
 
+       serial@f995d000 {
+               status = "ok";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&blsp2_uart7_pin_a>;
+
+               bluetooth {
+                       compatible = "brcm,bcm43438-bt";
+                       max-speed = <3000000>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&bt_host_wake_pin>,
+                                   <&bt_dev_wake_pin>,
+                                   <&bt_reg_on_pin>;
+
+                       host-wakeup-gpios = <&msmgpio 95 GPIO_ACTIVE_HIGH>;
+                       device-wakeup-gpios = <&msmgpio 96 GPIO_ACTIVE_HIGH>;
+                       shutdown-gpios = <&pm8941_gpios 16 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
        usb@f9a55000 {
                status = "okay";
 
                        };
                };
 
+               blsp2_uart7_pin_a: blsp2-uart7-pin-active {
+                       tx {
+                               pins = "gpio41";
+                               function = "blsp_uart7";
+
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
+                       rx {
+                               pins = "gpio42";
+                               function = "blsp_uart7";
+
+                               drive-strength = <2>;
+                               bias-pull-up;
+                       };
+
+                       cts {
+                               pins = "gpio43";
+                               function = "blsp_uart7";
+
+                               drive-strength = <2>;
+                               bias-pull-up;
+                       };
+
+                       rts {
+                               pins = "gpio44";
+                               function = "blsp_uart7";
+
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+               };
+
                i2c8_pins: i2c8 {
                        mux {
                                pins = "gpio47", "gpio48";
                                input-enable;
                        };
                };
+
+               bt_host_wake_pin: bt-host-wake {
+                       pins = "gpio95";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-low;
+               };
+
+               bt_dev_wake_pin: bt-dev-wake {
+                       pins = "gpio96";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
        };
 
        i2c@f9964000 {
                                power-source = <PM8941_GPIO_S3>;
                        };
 
+                       bt_reg_on_pin: bt-reg-on {
+                               pins = "gpio16";
+                               function = "normal";
+
+                               output-low;
+                               power-source = <PM8941_GPIO_S3>;
+                       };
+
                        wlan_sleep_clk_pin: wl-sleep-clk {
                                pins = "gpio17";
                                function = "func2";
index db4c06b..78ec496 100644 (file)
                        status = "disabled";
                };
 
+               blsp2_uart7: serial@f995d000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0xf995d000 0x1000>;
+                       interrupts = <GIC_SPI 113 IRQ_TYPE_NONE>;
+                       clocks = <&gcc GCC_BLSP2_UART1_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       status = "disabled";
+               };
+
                blsp2_uart8: serial@f995e000 {
                        compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                        reg = <0xf995e000 0x1000>;
index 0057c7c..1e6ce03 100644 (file)
                        reg = <0x8ff00000 0x100000>;
                };
 
-               tz_apps_mem: memory@0x90000000 {
+               tz_apps_mem: memory@90000000 {
                        no-map;
                        reg = <0x90000000 0x500000>;
                };
index 45cf75b..b07b713 100644 (file)
                                     <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
                        clock-frequency = <100000>;
                        power-domains = <&cpg_clocks>;
                                     <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&mstp9_clks R7S72100_CLK_I2C1>;
                        clock-frequency = <100000>;
                        power-domains = <&cpg_clocks>;
                                     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&mstp9_clks R7S72100_CLK_I2C2>;
                        clock-frequency = <100000>;
                        power-domains = <&cpg_clocks>;
                                     <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&mstp9_clks R7S72100_CLK_I2C3>;
                        clock-frequency = <100000>;
                        power-domains = <&cpg_clocks>;
index 85c0399..fdeb0bc 100644 (file)
                                     <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&cpg CPG_MOD 87>;
                        power-domains = <&cpg>;
                        clock-frequency = <100000>;
                                     <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&cpg CPG_MOD 86>;
                        power-domains = <&cpg>;
                        clock-frequency = <100000>;
                                     <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&cpg CPG_MOD 85>;
                        power-domains = <&cpg>;
                        clock-frequency = <100000>;
                                     <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
                        clocks = <&cpg CPG_MOD 84>;
                        power-domains = <&cpg>;
                        clock-frequency = <100000>;
index e5fb1ce..c390669 100644 (file)
                power-domains = <&pd_a3bc>;
        };
 
-       dmac: dma-multiplexer {
-               compatible = "renesas,shdma-mux";
-               #dma-cells = <1>;
-               dma-channels = <20>;
-               dma-requests = <256>;
-               #address-cells = <2>;
-               #size-cells = <2>;
-               ranges;
-
-               dma0: dma-controller@e6700020 {
-                       compatible = "renesas,shdma-r8a73a4";
-                       reg = <0 0xe6700020 0 0x89e0>;
-                       interrupts = <GIC_SPI 220 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>,
-                                    <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>;
-                       interrupt-names = "error",
-                                       "ch0", "ch1", "ch2", "ch3",
-                                       "ch4", "ch5", "ch6", "ch7",
-                                       "ch8", "ch9", "ch10", "ch11",
-                                       "ch12", "ch13", "ch14", "ch15",
-                                       "ch16", "ch17", "ch18", "ch19";
-                       clocks = <&mstp2_clks R8A73A4_CLK_DMAC>;
-                       power-domains = <&pd_a3sp>;
-               };
-       };
-
        i2c5: i2c@e60b0000 {
                #address-cells = <1>;
                #size-cells = <0>;
index a227968..420e0b3 100644 (file)
                iic3: i2c@e60b0000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "renesas,iic-r8a7742";
+                       compatible = "renesas,iic-r8a7742",
+                                    "renesas,rcar-gen2-iic",
+                                    "renesas,rmobile-iic";
                        reg = <0 0xe60b0000 0 0x425>;
                        interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 926>;
index 7e5e09d..3502b5d 100644 (file)
                        /* doesn't need pinmux */
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "renesas,iic-r8a7743";
+                       compatible = "renesas,iic-r8a7743",
+                                    "renesas,rcar-gen2-iic",
+                                    "renesas,rmobile-iic";
                        reg = <0 0xe60b0000 0 0x425>;
                        interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 926>;
index 8419683..f5d4b8b 100644 (file)
                        /* doesn't need pinmux */
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "renesas,iic-r8a7744";
+                       compatible = "renesas,iic-r8a7744",
+                                    "renesas,rcar-gen2-iic",
+                                    "renesas,rmobile-iic";
                        reg = <0 0xe60b0000 0 0x425>;
                        interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 926>;
index f5a665b..ae40554 100644 (file)
        };
 
        timer2: timer@2000e000 {
-               compatible = "snps,dw-apb-timer-osc";
+               compatible = "snps,dw-apb-timer";
                reg = <0x2000e000 0x100>;
                interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru SCLK_TIMER2>, <&cru PCLK_TIMER2>;
        };
 
        timer0: timer@20038000 {
-               compatible = "snps,dw-apb-timer-osc";
+               compatible = "snps,dw-apb-timer";
                reg = <0x20038000 0x100>;
                interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru SCLK_TIMER0>, <&cru PCLK_TIMER0>;
        };
 
        timer1: timer@2003a000 {
-               compatible = "snps,dw-apb-timer-osc";
+               compatible = "snps,dw-apb-timer";
                reg = <0x2003a000 0x100>;
                interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru SCLK_TIMER1>, <&cru PCLK_TIMER1>;
                        #interrupt-cells = <2>;
                };
 
-               pcfg_pull_default: pcfg_pull_default {
+               pcfg_pull_default: pcfg-pull-default {
                        bias-pull-pin-default;
                };
 
-               pcfg_pull_none: pcfg_pull_none {
+               pcfg_pull_none: pcfg-pull-none {
                        bias-disable;
                };
 
index 793a1b9..2c60649 100644 (file)
                        #interrupt-cells = <2>;
                };
 
-               pcfg_pull_up: pcfg_pull_up {
+               pcfg_pull_up: pcfg-pull-up {
                        bias-pull-up;
                };
 
-               pcfg_pull_down: pcfg_pull_down {
+               pcfg_pull_down: pcfg-pull-down {
                        bias-pull-down;
                };
 
-               pcfg_pull_none: pcfg_pull_none {
+               pcfg_pull_none: pcfg-pull-none {
                        bias-disable;
                };
 
        power-domains = <&power RK3188_PD_GPU>;
 };
 
-&grf{
+&grf {
        compatible = "rockchip,rk3188-grf", "syscon", "simple-mfd";
 
+       io_domains: io-domains {
+               compatible = "rockchip,rk3188-io-voltage-domain";
+               status = "disabled";
+       };
+
        usbphy: usbphy {
                compatible = "rockchip,rk3188-usb-phy",
                             "rockchip,rk3288-usb-phy";
index 9c5a779..4dcdcf1 100644 (file)
                compatible = "rockchip,iommu";
                reg = <0x0 0xff900800 0x0 0x40>;
                interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "iep_mmu";
                clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
                interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "isp_mmu";
                clocks = <&cru ACLK_ISP>, <&cru HCLK_ISP>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff930300 0x0 0x100>;
                interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vopb_mmu";
                clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
                clock-names = "aclk", "iface";
                power-domains = <&power RK3288_PD_VIO>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff940300 0x0 0x100>;
                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vopl_mmu";
                clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
                clock-names = "aclk", "iface";
                power-domains = <&power RK3288_PD_VIO>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff9a0800 0x0 0x100>;
                interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "vpu_mmu";
                clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
                compatible = "rockchip,iommu";
                reg = <0x0 0xff9c0440 0x0 0x40>, <0x0 0xff9c0480 0x0 0x40>;
                interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "hevc_mmu";
                clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>;
                clock-names = "aclk", "iface";
                #iommu-cells = <0>;
index 9bd0acf..24d5684 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
 
+               io_domains: io-domains {
+                       compatible = "rockchip,rv1108-io-voltage-domain";
+                       status = "disabled";
+               };
+
                u2phy: usb2phy@100 {
                        compatible = "rockchip,rv1108-usb2phy";
                        reg = <0x100 0x0c>;
        };
 
        pmugrf: syscon@20060000 {
-               compatible = "rockchip,rv1108-pmugrf", "syscon";
+               compatible = "rockchip,rv1108-pmugrf", "syscon", "simple-mfd";
                reg = <0x20060000 0x1000>;
+
+               pmu_io_domains: io-domains {
+                       compatible = "rockchip,rv1108-pmu-io-voltage-domain";
+                       status = "disabled";
+               };
        };
 
        usbgrf: syscon@202a0000 {
                status = "disabled";
        };
 
+       sfc: spi@301c0000 {
+               compatible = "rockchip,sfc";
+               reg = <0x301c0000 0x4000>;
+               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+               clock-names = "clk_sfc", "hclk_sfc";
+               pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus4>;
+               pinctrl-names = "default";
+               status = "disabled";
+       };
+
        gmac: eth@30200000 {
                compatible = "rockchip,rv1108-gmac";
                reg = <0x30200000 0x10000>;
                        };
                };
 
+               sfc {
+                       sfc_bus4: sfc-bus4 {
+                               rockchip,pins =
+                                       <2 RK_PA0 3 &pcfg_pull_none>,
+                                       <2 RK_PA1 3 &pcfg_pull_none>,
+                                       <2 RK_PA2 3 &pcfg_pull_none>,
+                                       <2 RK_PA3 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_bus2: sfc-bus2 {
+                               rockchip,pins =
+                                       <2 RK_PA0 3 &pcfg_pull_none>,
+                                       <2 RK_PA1 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_cs0: sfc-cs0 {
+                               rockchip,pins =
+                                       <2 RK_PB4 3 &pcfg_pull_none>;
+                       };
+
+                       sfc_clk: sfc-clk {
+                               rockchip,pins =
+                                       <2 RK_PB7 2 &pcfg_pull_none>;
+                       };
+               };
+
                gmac {
                        rmii_pins: rmii-pins {
                                rockchip,pins = <1 RK_PC5 2 &pcfg_pull_none>,
diff --git a/arch/arm/boot/dts/sama7g5-pinfunc.h b/arch/arm/boot/dts/sama7g5-pinfunc.h
new file mode 100644 (file)
index 0000000..22fe9e5
--- /dev/null
@@ -0,0 +1,923 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+#define PINMUX_PIN(no, func, ioset) \
+(((no) & 0xffff) | (((func) & 0xf) << 16) | (((ioset) & 0xff) << 20))
+
+#define PIN_PA0                                0
+#define PIN_PA0__GPIO                  PINMUX_PIN(PIN_PA0, 0, 0)
+#define PIN_PA0__SDMMC0_CK             PINMUX_PIN(PIN_PA0, 1, 1)
+#define PIN_PA0__FLEXCOM0_IO0          PINMUX_PIN(PIN_PA0, 2, 1)
+#define PIN_PA0__CANTX3                        PINMUX_PIN(PIN_PA0, 3, 1)
+#define PIN_PA0__PWML0                 PINMUX_PIN(PIN_PA0, 5, 2)
+#define PIN_PA1                                1
+#define PIN_PA1__GPIO                  PINMUX_PIN(PIN_PA1, 0, 0)
+#define PIN_PA1__SDMMC0_CMD            PINMUX_PIN(PIN_PA1, 1, 1)
+#define PIN_PA1__FLEXCOM0_IO1          PINMUX_PIN(PIN_PA1, 2, 1)
+#define PIN_PA1__CANRX3                        PINMUX_PIN(PIN_PA1, 3, 1)
+#define PIN_PA1__D14                   PINMUX_PIN(PIN_PA1, 4, 1)
+#define PIN_PA1__PWMH0                 PINMUX_PIN(PIN_PA1, 5, 3)
+#define PIN_PA2                                2
+#define PIN_PA2__GPIO                  PINMUX_PIN(PIN_PA2, 0, 0)
+#define PIN_PA2__SDMMC0_RSTN           PINMUX_PIN(PIN_PA2, 1, 1)
+#define PIN_PA2__FLEXCOM0_IO2          PINMUX_PIN(PIN_PA2, 2, 1)
+#define PIN_PA2__PDMC1_CLK             PINMUX_PIN(PIN_PA2, 3, 1)
+#define PIN_PA2__D15                   PINMUX_PIN(PIN_PA2, 4, 1)
+#define PIN_PA2__PWMH1                 PINMUX_PIN(PIN_PA2, 5, 3)
+#define PIN_PA2__FLEXCOM1_IO0          PINMUX_PIN(PIN_PA2, 6, 3)
+#define PIN_PA3                                3
+#define PIN_PA3__GPIO                  PINMUX_PIN(PIN_PA3, 0, 0)
+#define PIN_PA3__SDMMC0_DAT0           PINMUX_PIN(PIN_PA3, 1, 1)
+#define PIN_PA3__FLEXCOM0_IO3          PINMUX_PIN(PIN_PA3, 2, 1)
+#define PIN_PA3__PDMC1_DS0             PINMUX_PIN(PIN_PA3, 3, 1)
+#define PIN_PA3__NWR1_NBS1             PINMUX_PIN(PIN_PA3, 4, 1)
+#define PIN_PA3__PWML3                 PINMUX_PIN(PIN_PA3, 5, 3)
+#define PIN_PA3__FLEXCOM1_IO1          PINMUX_PIN(PIN_PA3, 6, 3)
+#define PIN_PA4                                4
+#define PIN_PA4__GPIO                  PINMUX_PIN(PIN_PA4, 0, 0)
+#define PIN_PA4__SDMMC0_DAT1           PINMUX_PIN(PIN_PA4, 1, 1)
+#define PIN_PA4__FLEXCOM0_IO4          PINMUX_PIN(PIN_PA4, 2, 1)
+#define PIN_PA4__PDMC1_DS1             PINMUX_PIN(PIN_PA4, 3, 1)
+#define PIN_PA4__NCS2                  PINMUX_PIN(PIN_PA4, 4, 1)
+#define PIN_PA4__PWMH3                 PINMUX_PIN(PIN_PA4, 5, 3)
+#define PIN_PA4__FLEXCOM2_IO0          PINMUX_PIN(PIN_PA4, 6, 3)
+#define PIN_PA5                                5
+#define PIN_PA5__GPIO                  PINMUX_PIN(PIN_PA5, 0, 0)
+#define PIN_PA5__SDMMC0_DAT2           PINMUX_PIN(PIN_PA5, 1, 1)
+#define PIN_PA5__FLEXCOM1_IO0          PINMUX_PIN(PIN_PA5, 2, 1)
+#define PIN_PA5__CANTX2                        PINMUX_PIN(PIN_PA5, 3, 1)
+#define PIN_PA5__A23                   PINMUX_PIN(PIN_PA5, 4, 1)
+#define PIN_PA5__PWMEXTRG0             PINMUX_PIN(PIN_PA5, 5, 3)
+#define PIN_PA5__FLEXCOM2_IO1          PINMUX_PIN(PIN_PA5, 6, 3)
+#define PIN_PA6                                6
+#define PIN_PA6__GPIO                  PINMUX_PIN(PIN_PA6, 0, 0)
+#define PIN_PA6__SDMMC0_DAT3           PINMUX_PIN(PIN_PA6, 1, 1)
+#define PIN_PA6__FLEXCOM1_IO1          PINMUX_PIN(PIN_PA6, 2, 1)
+#define PIN_PA6__CANRX2                        PINMUX_PIN(PIN_PA6, 3, 1)
+#define PIN_PA6__A24                   PINMUX_PIN(PIN_PA6, 4, 1)
+#define PIN_PA6__PWMEXTRG1             PINMUX_PIN(PIN_PA6, 5, 3)
+#define PIN_PA6__FLEXCOM3_IO0          PINMUX_PIN(PIN_PA6, 6, 3)
+#define PIN_PA7                                7
+#define PIN_PA7__GPIO                  PINMUX_PIN(PIN_PA7, 0, 0)
+#define PIN_PA7__SDMMC0_DAT4           PINMUX_PIN(PIN_PA7, 1, 1)
+#define PIN_PA7__FLEXCOM2_IO0          PINMUX_PIN(PIN_PA7, 2, 1)
+#define PIN_PA7__CANTX1                        PINMUX_PIN(PIN_PA7, 3, 1)
+#define PIN_PA7__NWAIT                 PINMUX_PIN(PIN_PA7, 4, 1)
+#define PIN_PA7__PWMFI0                        PINMUX_PIN(PIN_PA7, 5, 3)
+#define PIN_PA7__FLEXCOM3_IO1          PINMUX_PIN(PIN_PA7, 6, 3)
+#define PIN_PA8                                8
+#define PIN_PA8__GPIO                  PINMUX_PIN(PIN_PA8, 0, 0)
+#define PIN_PA8__SDMMC0_DAT5           PINMUX_PIN(PIN_PA8, 1, 1)
+#define PIN_PA8__FLEXCOM2_IO1          PINMUX_PIN(PIN_PA8, 2, 1)
+#define PIN_PA8__CANRX1                        PINMUX_PIN(PIN_PA8, 3, 1)
+#define PIN_PA8__NCS0                  PINMUX_PIN(PIN_PA8, 4, 1)
+#define PIN_PA8__PWMIF1                        PINMUX_PIN(PIN_PA8, 5, 3)
+#define PIN_PA8__FLEXCOM4_IO0          PINMUX_PIN(PIN_PA8, 6, 3)
+#define PIN_PA9                                9
+#define PIN_PA9__GPIO                  PINMUX_PIN(PIN_PA9, 0, 0)
+#define PIN_PA9__SDMMC0_DAT6           PINMUX_PIN(PIN_PA9, 1, 1)
+#define PIN_PA9__FLEXCOM2_IO2          PINMUX_PIN(PIN_PA9, 2, 1)
+#define PIN_PA9__CANTX0                        PINMUX_PIN(PIN_PA9, 3, 1)
+#define PIN_PA9__SMCK                  PINMUX_PIN(PIN_PA9, 4, 1)
+#define PIN_PA9__SPDIF_RX              PINMUX_PIN(PIN_PA9, 5, 1)
+#define PIN_PA9__FLEXCOM4_IO1          PINMUX_PIN(PIN_PA9, 6, 3)
+#define PIN_PA10                       10
+#define PIN_PA10__GPIO                 PINMUX_PIN(PIN_PA10, 0, 0)
+#define PIN_PA10__SDMMC0_DAT7          PINMUX_PIN(PIN_PA10, 1, 1)
+#define PIN_PA10__FLEXCOM2_IO3         PINMUX_PIN(PIN_PA10, 2, 1)
+#define PIN_PA10__CANRX0               PINMUX_PIN(PIN_PA10, 3, 1)
+#define PIN_PA10__NCS1                 PINMUX_PIN(PIN_PA10, 4, 1)
+#define PIN_PA10__SPDIF_TX             PINMUX_PIN(PIN_PA10, 5, 1)
+#define PIN_PA10__FLEXCOM5_IO0         PINMUX_PIN(PIN_PA10, 6, 3)
+#define PIN_PA11                       11
+#define PIN_PA11__GPIO                 PINMUX_PIN(PIN_PA11, 0, 0)
+#define PIN_PA11__SDMMC0_DS            PINMUX_PIN(PIN_PA11, 1, 1)
+#define PIN_PA11__FLEXCOM2_IO4         PINMUX_PIN(PIN_PA11, 2, 1)
+#define PIN_PA11__A0_NBS0              PINMUX_PIN(PIN_PA11, 4, 1)
+#define PIN_PA11__TIOA0                        PINMUX_PIN(PIN_PA11, 5, 1)
+#define PIN_PA11__FLEXCOM5_IO1         PINMUX_PIN(PIN_PA11, 6, 3)
+#define PIN_PA12                       12
+#define PIN_PA12__GPIO                 PINMUX_PIN(PIN_PA12, 0, 0)
+#define PIN_PA12__SDMMC0_WP            PINMUX_PIN(PIN_PA12, 1, 1)
+#define PIN_PA12__FLEXCOM1_IO3         PINMUX_PIN(PIN_PA12, 2, 1)
+#define PIN_PA12__FLEXCOM3_IO5         PINMUX_PIN(PIN_PA12, 4, 1)
+#define PIN_PA12__PWML2                        PINMUX_PIN(PIN_PA12, 5, 3)
+#define PIN_PA12__FLEXCOM6_IO0         PINMUX_PIN(PIN_PA12, 6, 3)
+#define PIN_PA13                       13
+#define PIN_PA13__GPIO                 PINMUX_PIN(PIN_PA13, 0, 0)
+#define PIN_PA13__SDMMC0_1V8SEL                PINMUX_PIN(PIN_PA13, 1, 1)
+#define PIN_PA13__FLEXCOM1_IO2         PINMUX_PIN(PIN_PA13, 2, 1)
+#define PIN_PA13__FLEXCOM3_IO6         PINMUX_PIN(PIN_PA13, 4, 1)
+#define PIN_PA13__PWMH2                        PINMUX_PIN(PIN_PA13, 5, 3)
+#define PIN_PA13__FLEXCOM6_IO1         PINMUX_PIN(PIN_PA13, 6, 3)
+#define PIN_PA14                       14
+#define PIN_PA14__GPIO                 PINMUX_PIN(PIN_PA14, 0, 0)
+#define PIN_PA14__SDMMC0_CD            PINMUX_PIN(PIN_PA14, 1, 1)
+#define PIN_PA14__FLEXCOM1_IO4         PINMUX_PIN(PIN_PA14, 2, 1)
+#define PIN_PA14__A25                  PINMUX_PIN(PIN_PA14, 4, 1)
+#define PIN_PA14__PWML1                        PINMUX_PIN(PIN_PA14, 5, 3)
+#define PIN_PA15                       15
+#define PIN_PA15__GPIO                 PINMUX_PIN(PIN_PA15, 0, 0)
+#define PIN_PA15__G0_TXEN              PINMUX_PIN(PIN_PA15, 1, 1)
+#define PIN_PA15__FLEXCOM3_IO0         PINMUX_PIN(PIN_PA15, 2, 1)
+#define PIN_PA15__ISC_MCK              PINMUX_PIN(PIN_PA15, 3, 1)
+#define PIN_PA15__A1                   PINMUX_PIN(PIN_PA15, 4, 1)
+#define PIN_PA15__TIOB0                        PINMUX_PIN(PIN_PA15, 5, 1)
+#define PIN_PA16                       16
+#define PIN_PA16__GPIO                 PINMUX_PIN(PIN_PA16, 0, 0)
+#define PIN_PA16__G0_TX0               PINMUX_PIN(PIN_PA16, 1, 1)
+#define PIN_PA16__FLEXCOM3_IO1         PINMUX_PIN(PIN_PA16, 2, 1)
+#define PIN_PA16__ISC_D0               PINMUX_PIN(PIN_PA16, 3, 1)
+#define PIN_PA16__A2                   PINMUX_PIN(PIN_PA16, 4, 1)
+#define PIN_PA16__TCLK0                        PINMUX_PIN(PIN_PA16, 5, 1)
+#define PIN_PA17                       17
+#define PIN_PA17__GPIO                 PINMUX_PIN(PIN_PA17, 0, 0)
+#define PIN_PA17__G0_TX1               PINMUX_PIN(PIN_PA17, 1, 1)
+#define PIN_PA17__FLEXCOM3_IO2         PINMUX_PIN(PIN_PA17, 2, 1)
+#define PIN_PA17__ISC_D1               PINMUX_PIN(PIN_PA17, 3, 1)
+#define PIN_PA17__A3                   PINMUX_PIN(PIN_PA17, 4, 1)
+#define PIN_PA17__TIOA1                        PINMUX_PIN(PIN_PA17, 5, 1)
+#define PIN_PA18                       18
+#define PIN_PA18__GPIO                 PINMUX_PIN(PIN_PA18, 0, 0)
+#define PIN_PA18__G0_RXDV              PINMUX_PIN(PIN_PA18, 1, 1)
+#define PIN_PA18__FLEXCOM3_IO3         PINMUX_PIN(PIN_PA18, 2, 1)
+#define PIN_PA18__ISC_D2               PINMUX_PIN(PIN_PA18, 3, 1)
+#define PIN_PA18__A4                   PINMUX_PIN(PIN_PA18, 4, 1)
+#define PIN_PA18__TIOB1                        PINMUX_PIN(PIN_PA18, 5, 1)
+#define PIN_PA19                       19
+#define PIN_PA19__GPIO                 PINMUX_PIN(PIN_PA19, 0, 0)
+#define PIN_PA19__G0_RX0               PINMUX_PIN(PIN_PA19, 1, 1)
+#define PIN_PA19__FLEXCOM3_IO4         PINMUX_PIN(PIN_PA19, 2, 1)
+#define PIN_PA19__ISC_D3               PINMUX_PIN(PIN_PA19, 3, 1)
+#define PIN_PA19__A5                   PINMUX_PIN(PIN_PA19, 4, 1)
+#define PIN_PA19__TCLK1                        PINMUX_PIN(PIN_PA19, 5, 1)
+#define PIN_PA20                       20
+#define PIN_PA20__GPIO                 PINMUX_PIN(PIN_PA20, 0, 0)
+#define PIN_PA20__G0_RX1               PINMUX_PIN(PIN_PA20, 1, 1)
+#define PIN_PA20__FLEXCOM4_IO0         PINMUX_PIN(PIN_PA20, 2, 1)
+#define PIN_PA20__ISC_D4               PINMUX_PIN(PIN_PA20, 3, 1)
+#define PIN_PA20__A6                   PINMUX_PIN(PIN_PA20, 4, 1)
+#define PIN_PA20__TIOA2                        PINMUX_PIN(PIN_PA20, 5, 1)
+#define PIN_PA21                       21
+#define PIN_PA21__GPIO                 PINMUX_PIN(PIN_PA21, 0, 0)
+#define PIN_PA21__G0_RXER              PINMUX_PIN(PIN_PA21, 1, 1)
+#define PIN_PA21__FLEXCOM4_IO1         PINMUX_PIN(PIN_PA21, 2, 1)
+#define PIN_PA21__ISC_D5               PINMUX_PIN(PIN_PA21, 3, 1)
+#define PIN_PA21__A7                   PINMUX_PIN(PIN_PA21, 4, 1)
+#define PIN_PA21__TIOB2                        PINMUX_PIN(PIN_PA21, 5, 1)
+#define PIN_PA22                       22
+#define PIN_PA22__GPIO                 PINMUX_PIN(PIN_PA22, 0, 0)
+#define PIN_PA22__G0_MDC               PINMUX_PIN(PIN_PA22, 1, 1)
+#define PIN_PA22__FLEXCOM4_IO2         PINMUX_PIN(PIN_PA22, 2, 1)
+#define PIN_PA22__ISC_D6               PINMUX_PIN(PIN_PA22, 3, 1)
+#define PIN_PA22__A8                   PINMUX_PIN(PIN_PA22, 4, 1)
+#define PIN_PA22__TCLK2                        PINMUX_PIN(PIN_PA22, 5, 1)
+#define PIN_PA23                       23
+#define PIN_PA23__GPIO                 PINMUX_PIN(PIN_PA23, 0, 0)
+#define PIN_PA23__G0_MDIO              PINMUX_PIN(PIN_PA23, 1, 1)
+#define PIN_PA23__FLEXCOM4_IO3         PINMUX_PIN(PIN_PA23, 2, 1)
+#define PIN_PA23__ISC_D7               PINMUX_PIN(PIN_PA23, 3, 1)
+#define PIN_PA23__A9                   PINMUX_PIN(PIN_PA23, 4, 1)
+#define PIN_PA24                       24
+#define PIN_PA24__GPIO                 PINMUX_PIN(PIN_PA24, 0, 0)
+#define PIN_PA24__G0_TXCK              PINMUX_PIN(PIN_PA24, 1, 1)
+#define PIN_PA24__FLEXCOM4_IO4         PINMUX_PIN(PIN_PA24, 2, 1)
+#define PIN_PA24__ISC_HSYNC            PINMUX_PIN(PIN_PA24, 3, 1)
+#define PIN_PA24__A10                  PINMUX_PIN(PIN_PA24, 4, 1)
+#define PIN_PA24__FLEXCOM0_IO5         PINMUX_PIN(PIN_PA24, 5, 1)
+#define PIN_PA25                       25
+#define PIN_PA25__GPIO                 PINMUX_PIN(PIN_PA25, 0, 0)
+#define PIN_PA25__G0_125CK             PINMUX_PIN(PIN_PA25, 1, 1)
+#define PIN_PA25__FLEXCOM5_IO4         PINMUX_PIN(PIN_PA25, 2, 1)
+#define PIN_PA25__ISC_VSYNC            PINMUX_PIN(PIN_PA25, 3, 1)
+#define PIN_PA25__A11                  PINMUX_PIN(PIN_PA25, 4, 1)
+#define PIN_PA25__FLEXCOM0_IO6         PINMUX_PIN(PIN_PA25, 5, 1)
+#define PIN_PA25__FLEXCOM7_IO0         PINMUX_PIN(PIN_PA25, 6, 3)
+#define PIN_PA26                       26
+#define PIN_PA26__GPIO                 PINMUX_PIN(PIN_PA26, 0, 0)
+#define PIN_PA26__G0_TX2               PINMUX_PIN(PIN_PA26, 1, 1)
+#define PIN_PA26__FLEXCOM5_IO2         PINMUX_PIN(PIN_PA26, 2, 1)
+#define PIN_PA26__ISC_FIELD            PINMUX_PIN(PIN_PA26, 3, 1)
+#define PIN_PA26__A12                  PINMUX_PIN(PIN_PA26, 4, 1)
+#define PIN_PA26__TF0                  PINMUX_PIN(PIN_PA26, 5, 1)
+#define PIN_PA26__FLEXCOM7_IO1         PINMUX_PIN(PIN_PA26, 6, 3)
+#define PIN_PA27                       27
+#define PIN_PA27__GPIO                 PINMUX_PIN(PIN_PA27, 0, 0)
+#define PIN_PA27__G0_TX3               PINMUX_PIN(PIN_PA27, 1, 1)
+#define PIN_PA27__FLEXCOM5_IO3         PINMUX_PIN(PIN_PA27, 2, 1)
+#define PIN_PA27__ISC_PCK              PINMUX_PIN(PIN_PA27, 3, 1)
+#define PIN_PA27__A13                  PINMUX_PIN(PIN_PA27, 4, 1)
+#define PIN_PA27__TK0                  PINMUX_PIN(PIN_PA27, 5, 1)
+#define PIN_PA27__FLEXCOM8_IO0         PINMUX_PIN(PIN_PA27, 6, 3)
+#define PIN_PA28                       28
+#define PIN_PA28__GPIO                 PINMUX_PIN(PIN_PA28, 0, 0)
+#define PIN_PA28__G0_RX2               PINMUX_PIN(PIN_PA28, 1, 1)
+#define PIN_PA28__FLEXCOM5_IO0         PINMUX_PIN(PIN_PA28, 2, 1)
+#define PIN_PA28__ISC_D8               PINMUX_PIN(PIN_PA28, 3, 1)
+#define PIN_PA28__A14                  PINMUX_PIN(PIN_PA28, 4, 1)
+#define PIN_PA28__RD0                  PINMUX_PIN(PIN_PA28, 5, 1)
+#define PIN_PA28__FLEXCOM8_IO1         PINMUX_PIN(PIN_PA28, 6, 3)
+#define PIN_PA29                       29
+#define PIN_PA29__GPIO                 PINMUX_PIN(PIN_PA29, 0, 0)
+#define PIN_PA29__G0_RX3               PINMUX_PIN(PIN_PA29, 1, 1)
+#define PIN_PA29__FLEXCOM5_IO1         PINMUX_PIN(PIN_PA29, 2, 1)
+#define PIN_PA29__ISC_D9               PINMUX_PIN(PIN_PA29, 3, 1)
+#define PIN_PA29__A15                  PINMUX_PIN(PIN_PA29, 4, 1)
+#define PIN_PA29__RF0                  PINMUX_PIN(PIN_PA29, 5, 1)
+#define PIN_PA29__FLEXCOM9_IO0         PINMUX_PIN(PIN_PA29, 6, 3)
+#define PIN_PA30                       30
+#define PIN_PA30__GPIO                 PINMUX_PIN(PIN_PA30, 0, 0)
+#define PIN_PA30__G0_RXCK              PINMUX_PIN(PIN_PA30, 1, 1)
+#define PIN_PA30__FLEXCOM6_IO4         PINMUX_PIN(PIN_PA30, 2, 1)
+#define PIN_PA30__ISC_D10              PINMUX_PIN(PIN_PA30, 3, 1)
+#define PIN_PA30__A16                  PINMUX_PIN(PIN_PA30, 4, 1)
+#define PIN_PA30__RK0                  PINMUX_PIN(PIN_PA30, 5, 1)
+#define PIN_PA30__FLEXCOM9_IO1         PINMUX_PIN(PIN_PA30, 6, 3)
+#define PIN_PA31                       31
+#define PIN_PA31__GPIO                 PINMUX_PIN(PIN_PA31, 0, 0)
+#define PIN_PA31__G0_TXER              PINMUX_PIN(PIN_PA31, 1, 1)
+#define PIN_PA31__FLEXCOM6_IO2         PINMUX_PIN(PIN_PA31, 2, 1)
+#define PIN_PA31__ISC_D11              PINMUX_PIN(PIN_PA31, 3, 1)
+#define PIN_PA31__A17                  PINMUX_PIN(PIN_PA31, 4, 1)
+#define PIN_PA31__TD0                  PINMUX_PIN(PIN_PA31, 5, 1)
+#define PIN_PA31__FLEXCOM10_IO0                PINMUX_PIN(PIN_PA31, 6, 3)
+#define PIN_PB0                                32
+#define PIN_PB0__GPIO                  PINMUX_PIN(PIN_PB0, 0, 0)
+#define PIN_PB0__G0_COL                        PINMUX_PIN(PIN_PB0, 1, 1)
+#define PIN_PB0__FLEXCOM6_IO3          PINMUX_PIN(PIN_PB0, 2, 2)
+#define PIN_PB0__EXT_IRQ0              PINMUX_PIN(PIN_PB0, 3, 1)
+#define PIN_PB0__A18                   PINMUX_PIN(PIN_PB0, 4, 1)
+#define PIN_PB0__SPDIF_RX              PINMUX_PIN(PIN_PB0, 5, 2)
+#define PIN_PB0__FLEXCOM10_IO1         PINMUX_PIN(PIN_PB0, 6, 3)
+#define PIN_PB1                                33
+#define PIN_PB1__GPIO                  PINMUX_PIN(PIN_PB1, 0, 0)
+#define PIN_PB1__G0_CRS                        PINMUX_PIN(PIN_PB1, 1, 1)
+#define PIN_PB1__FLEXCOM6_IO1          PINMUX_PIN(PIN_PB1, 2, 2)
+#define PIN_PB1__EXT_IRQ1              PINMUX_PIN(PIN_PB1, 3, 1)
+#define PIN_PB1__A19                   PINMUX_PIN(PIN_PB1, 4, 1)
+#define PIN_PB1__SPDIF_TX              PINMUX_PIN(PIN_PB1, 5, 2)
+#define PIN_PB1__FLEXCOM11_IO0         PINMUX_PIN(PIN_PB1, 6, 3)
+#define PIN_PB2                                34
+#define PIN_PB2__GPIO                  PINMUX_PIN(PIN_PB2, 0, 0)
+#define PIN_PB2__G0_TSUCOMP            PINMUX_PIN(PIN_PB2, 1, 1)
+#define PIN_PB2__FLEXCOM6_IO0          PINMUX_PIN(PIN_PB2, 2, 1)
+#define PIN_PB2__ADTRG                 PINMUX_PIN(PIN_PB2, 3, 1)
+#define PIN_PB2__A20                   PINMUX_PIN(PIN_PB2, 4, 1)
+#define PIN_PB2__FLEXCOM11_IO0         PINMUX_PIN(PIN_PB2, 6, 3)
+#define PIN_PB3                                35
+#define PIN_PB3__GPIO                  PINMUX_PIN(PIN_PB3, 0, 0)
+#define PIN_PB3__RF1                   PINMUX_PIN(PIN_PB3, 1, 1)
+#define PIN_PB3__FLEXCOM11_IO0         PINMUX_PIN(PIN_PB3, 2, 1)
+#define PIN_PB3__PCK2                  PINMUX_PIN(PIN_PB3, 3, 2)
+#define PIN_PB3__D8                    PINMUX_PIN(PIN_PB3, 4, 1)
+#define PIN_PB4                                36
+#define PIN_PB4__GPIO                  PINMUX_PIN(PIN_PB4, 0, 0)
+#define PIN_PB4__TF1                   PINMUX_PIN(PIN_PB4, 1, 1)
+#define PIN_PB4__FLEXCOM11_IO1         PINMUX_PIN(PIN_PB4, 2, 1)
+#define PIN_PB4__PCK3                  PINMUX_PIN(PIN_PB4, 3, 2)
+#define PIN_PB4__D9                    PINMUX_PIN(PIN_PB4, 4, 1)
+#define PIN_PB5                                37
+#define PIN_PB5__GPIO                  PINMUX_PIN(PIN_PB5, 0, 0)
+#define PIN_PB5__TK1                   PINMUX_PIN(PIN_PB5, 1, 1)
+#define PIN_PB5__FLEXCOM11_IO2         PINMUX_PIN(PIN_PB5, 2, 1)
+#define PIN_PB5__PCK4                  PINMUX_PIN(PIN_PB5, 3, 2)
+#define PIN_PB5__D10                   PINMUX_PIN(PIN_PB5, 4, 1)
+#define PIN_PB6                                38
+#define PIN_PB6__GPIO                  PINMUX_PIN(PIN_PB6, 0, 0)
+#define PIN_PB6__RK1                   PINMUX_PIN(PIN_PB6, 1, 1)
+#define PIN_PB6__FLEXCOM11_IO3         PINMUX_PIN(PIN_PB6, 2, 1)
+#define PIN_PB6__PCK5                  PINMUX_PIN(PIN_PB6, 3, 2)
+#define PIN_PB6__D11                   PINMUX_PIN(PIN_PB6, 4, 1)
+#define PIN_PB7                                39
+#define PIN_PB7__GPIO                  PINMUX_PIN(PIN_PB7, 0, 0)
+#define PIN_PB7__TD1                   PINMUX_PIN(PIN_PB7, 1, 1)
+#define PIN_PB7__FLEXCOM11_IO4         PINMUX_PIN(PIN_PB7, 2, 1)
+#define PIN_PB7__FLEXCOM3_IO5          PINMUX_PIN(PIN_PB7, 3, 2)
+#define PIN_PB7__D12                   PINMUX_PIN(PIN_PB7, 4, 1)
+#define PIN_PB8                                40
+#define PIN_PB8__GPIO                  PINMUX_PIN(PIN_PB8, 0, 0)
+#define PIN_PB8__RD1                   PINMUX_PIN(PIN_PB8, 1, 1)
+#define PIN_PB8__FLEXCOM8_IO0          PINMUX_PIN(PIN_PB8, 2, 1)
+#define PIN_PB8__FLEXCOM3_IO6          PINMUX_PIN(PIN_PB8, 3, 2)
+#define PIN_PB8__D13                   PINMUX_PIN(PIN_PB8, 4, 1)
+#define PIN_PB9                                41
+#define PIN_PB9__GPIO                  PINMUX_PIN(PIN_PB9, 0, 0)
+#define PIN_PB9__QSPI0_IO3             PINMUX_PIN(PIN_PB9, 1, 1)
+#define PIN_PB9__FLEXCOM8_IO1          PINMUX_PIN(PIN_PB9, 2, 1)
+#define PIN_PB9__PDMC0_CLK             PINMUX_PIN(PIN_PB9, 3, 1)
+#define PIN_PB9__NCS3_NANDCS           PINMUX_PIN(PIN_PB9, 4, 1)
+#define PIN_PB9__PWML0                 PINMUX_PIN(PIN_PB9, 5, 2)
+#define PIN_PB10                       42
+#define PIN_PB10__GPIO                 PINMUX_PIN(PIN_PB10, 0, 0)
+#define PIN_PB10__QSPI0_IO2            PINMUX_PIN(PIN_PB10, 1, 1)
+#define PIN_PB10__FLEXCOM8_IO2         PINMUX_PIN(PIN_PB10, 2, 1)
+#define PIN_PB10__PDMC0_DS0            PINMUX_PIN(PIN_PB10, 3, 1)
+#define PIN_PB10__NWE_NWR0_NANDWE      PINMUX_PIN(PIN_PB10, 4, 1)
+#define PIN_PB10__PWMH0                        PINMUX_PIN(PIN_PB10, 5, 2)
+#define PIN_PB11                       43
+#define PIN_PB11__GPIO                 PINMUX_PIN(PIN_PB11, 0, 0)
+#define PIN_PB11__QSPI0_IO1            PINMUX_PIN(PIN_PB11, 1, 1)
+#define PIN_PB11__FLEXCOM8_IO3         PINMUX_PIN(PIN_PB11, 2, 1)
+#define PIN_PB11__PDMC0_DS1            PINMUX_PIN(PIN_PB11, 3, 1)
+#define PIN_PB11__NRD_NANDOE           PINMUX_PIN(PIN_PB11, 4, 1)
+#define PIN_PB11__PWML1                        PINMUX_PIN(PIN_PB11, 5, 2)
+#define PIN_PB12                       44
+#define PIN_PB12__GPIO                 PINMUX_PIN(PIN_PB12, 0, 0)
+#define PIN_PB12__QSPI0_IO0            PINMUX_PIN(PIN_PB12, 1, 1)
+#define PIN_PB12__FLEXCOM8_IO4         PINMUX_PIN(PIN_PB12, 2, 1)
+#define PIN_PB12__FLEXCOM6_IO5         PINMUX_PIN(PIN_PB12, 3, 1)
+#define PIN_PB12__A21_NANDALE          PINMUX_PIN(PIN_PB12, 4, 1)
+#define PIN_PB12__PWMH1                        PINMUX_PIN(PIN_PB12, 5, 2)
+#define PIN_PB13                       45
+#define PIN_PB13__GPIO                 PINMUX_PIN(PIN_PB13, 0, 0)
+#define PIN_PB13__QSPI0_CS             PINMUX_PIN(PIN_PB13, 1, 1)
+#define PIN_PB13__FLEXCOM9_IO0         PINMUX_PIN(PIN_PB13, 2, 1)
+#define PIN_PB13__FLEXCOM6_IO6         PINMUX_PIN(PIN_PB13, 3, 1)
+#define PIN_PB13__A22_NANDCLE          PINMUX_PIN(PIN_PB13, 4, 1)
+#define PIN_PB13__PWML2                        PINMUX_PIN(PIN_PB13, 5, 2)
+#define PIN_PB14                       46
+#define PIN_PB14__GPIO                 PINMUX_PIN(PIN_PB14, 0, 0)
+#define PIN_PB14__QSPI0_SCK            PINMUX_PIN(PIN_PB14, 1, 1)
+#define PIN_PB14__FLEXCOM9_IO1         PINMUX_PIN(PIN_PB14, 2, 1)
+#define PIN_PB14__D0                   PINMUX_PIN(PIN_PB14, 4, 1)
+#define PIN_PB14__PWMH2                        PINMUX_PIN(PIN_PB14, 5, 2)
+#define PIN_PB15                       47
+#define PIN_PB15__GPIO                 PINMUX_PIN(PIN_PB15, 0, 0)
+#define PIN_PB15__QSPI0_SCKN           PINMUX_PIN(PIN_PB15, 1, 1)
+#define PIN_PB15__FLEXCOM9_IO2         PINMUX_PIN(PIN_PB15, 2, 1)
+#define PIN_PB15__D1                   PINMUX_PIN(PIN_PB15, 4, 1)
+#define PIN_PB15__PWML3                        PINMUX_PIN(PIN_PB15, 5, 2)
+#define PIN_PB16                       48
+#define PIN_PB16__GPIO                 PINMUX_PIN(PIN_PB16, 0, 0)
+#define PIN_PB16__QSPI0_IO4            PINMUX_PIN(PIN_PB16, 1, 1)
+#define PIN_PB16__FLEXCOM9_IO3         PINMUX_PIN(PIN_PB16, 2, 1)
+#define PIN_PB16__PCK0                 PINMUX_PIN(PIN_PB16, 3, 1)
+#define PIN_PB16__D2                   PINMUX_PIN(PIN_PB16, 4, 1)
+#define PIN_PB16__PWMH3                        PINMUX_PIN(PIN_PB16, 5, 2)
+#define PIN_PB16__EXT_IRQ0             PINMUX_PIN(PIN_PB16, 6, 2)
+#define PIN_PB17                       49
+#define PIN_PB17__GPIO                 PINMUX_PIN(PIN_PB17, 0, 0)
+#define PIN_PB17__QSPI0_IO5            PINMUX_PIN(PIN_PB17, 1, 1)
+#define PIN_PB17__FLEXCOM9_IO4         PINMUX_PIN(PIN_PB17, 2, 1)
+#define PIN_PB17__PCK1                 PINMUX_PIN(PIN_PB17, 3, 1)
+#define PIN_PB17__D3                   PINMUX_PIN(PIN_PB17, 4, 1)
+#define PIN_PB17__PWMEXTRG0            PINMUX_PIN(PIN_PB17, 5, 2)
+#define PIN_PB17__EXT_IRQ1             PINMUX_PIN(PIN_PB17, 6, 2)
+#define PIN_PB18                       50
+#define PIN_PB18__GPIO                 PINMUX_PIN(PIN_PB18, 0, 0)
+#define PIN_PB18__QSPI0_IO6            PINMUX_PIN(PIN_PB18, 1, 1)
+#define PIN_PB18__FLEXCOM10_IO0                PINMUX_PIN(PIN_PB18, 2, 1)
+#define PIN_PB18__PCK2                 PINMUX_PIN(PIN_PB18, 3, 1)
+#define PIN_PB18__D4                   PINMUX_PIN(PIN_PB18, 4, 1)
+#define PIN_PB18__PWMEXTRG1            PINMUX_PIN(PIN_PB18, 5, 2)
+#define PIN_PB19                       51
+#define PIN_PB19__GPIO                 PINMUX_PIN(PIN_PB19, 0, 0)
+#define PIN_PB19__QSPI0_IO7            PINMUX_PIN(PIN_PB19, 1, 1)
+#define PIN_PB19__FLEXCOM10_IO1                PINMUX_PIN(PIN_PB19, 2, 1)
+#define PIN_PB19__PCK3                 PINMUX_PIN(PIN_PB19, 3, 1)
+#define PIN_PB19__D5                   PINMUX_PIN(PIN_PB19, 4, 1)
+#define PIN_PB19__PWMFI0               PINMUX_PIN(PIN_PB19, 5, 2)
+#define PIN_PB20                       52
+#define PIN_PB20__GPIO                 PINMUX_PIN(PIN_PB20, 0, 0)
+#define PIN_PB20__QSPI0_DQS            PINMUX_PIN(PIN_PB20, 1, 1)
+#define PIN_PB20__FLEXCOM10_IO2                PINMUX_PIN(PIN_PB20, 2, 1)
+#define PIN_PB20__D6                   PINMUX_PIN(PIN_PB20, 4, 1)
+#define PIN_PB20__PWMFI1               PINMUX_PIN(PIN_PB20, 5, 2)
+#define PIN_PB21                       53
+#define PIN_PB21__GPIO                 PINMUX_PIN(PIN_PB21, 0, 0)
+#define PIN_PB21__QSPI0_INT            PINMUX_PIN(PIN_PB21, 1, 1)
+#define PIN_PB21__FLEXCOM10_IO3                PINMUX_PIN(PIN_PB21, 2, 1)
+#define PIN_PB21__FLEXCOM9_IO5         PINMUX_PIN(PIN_PB21, 3, 1)
+#define PIN_PB21__D7                   PINMUX_PIN(PIN_PB21, 4, 1)
+#define PIN_PB22                       54
+#define PIN_PB22__GPIO                 PINMUX_PIN(PIN_PB22, 0, 0)
+#define PIN_PB22__QSPI1_IO3            PINMUX_PIN(PIN_PB22, 1, 1)
+#define PIN_PB22__FLEXCOM10_IO4                PINMUX_PIN(PIN_PB22, 2, 1)
+#define PIN_PB22__FLEXCOM9_IO6         PINMUX_PIN(PIN_PB22, 3, 1)
+#define PIN_PB22__NANDRDY              PINMUX_PIN(PIN_PB22, 4, 1)
+#define PIN_PB23                       55
+#define PIN_PB23__GPIO                 PINMUX_PIN(PIN_PB23, 0, 0)
+#define PIN_PB23__QSPI1_IO2            PINMUX_PIN(PIN_PB23, 1, 1)
+#define PIN_PB23__FLEXCOM7_IO0         PINMUX_PIN(PIN_PB23, 2, 1)
+#define PIN_PB23__I2SMCC0_CK           PINMUX_PIN(PIN_PB23, 3, 1)
+#define PIN_PB23__PCK4                 PINMUX_PIN(PIN_PB23, 6, 1)
+#define PIN_PB24                       56
+#define PIN_PB24__GPIO                 PINMUX_PIN(PIN_PB24, 0, 0)
+#define PIN_PB24__QSPI1_IO1            PINMUX_PIN(PIN_PB24, 1, 1)
+#define PIN_PB24__FLEXCOM7_IO1         PINMUX_PIN(PIN_PB24, 2, 1)
+#define PIN_PB24__I2SMCC0_WS           PINMUX_PIN(PIN_PB24, 3, 1)
+#define PIN_PB24__PCK5                 PINMUX_PIN(PIN_PB24, 6, 1)
+#define PIN_PB25                       57
+#define PIN_PB25__GPIO                 PINMUX_PIN(PIN_PB25, 0, 0)
+#define PIN_PB25__QSPI1_IO0            PINMUX_PIN(PIN_PB25, 1, 1)
+#define PIN_PB25__FLEXCOM7_IO2         PINMUX_PIN(PIN_PB25, 2, 1)
+#define PIN_PB25__I2SMCC0_DOUT1                PINMUX_PIN(PIN_PB25, 3, 1)
+#define PIN_PB25__PCK6                 PINMUX_PIN(PIN_PB25, 6, 1)
+#define PIN_PB26                       58
+#define PIN_PB26__GPIO                 PINMUX_PIN(PIN_PB26, 0, 0)
+#define PIN_PB26__QSPI1_CS             PINMUX_PIN(PIN_PB26, 1, 1)
+#define PIN_PB26__FLEXCOM7_IO3         PINMUX_PIN(PIN_PB26, 2, 1)
+#define PIN_PB26__I2SMCC0_DOUT0                PINMUX_PIN(PIN_PB26, 3, 1)
+#define PIN_PB26__PWMEXTRG0            PINMUX_PIN(PIN_PB26, 5, 1)
+#define PIN_PB26__PCK7                 PINMUX_PIN(PIN_PB26, 6, 1)
+#define PIN_PB27                       59
+#define PIN_PB27__GPIO                 PINMUX_PIN(PIN_PB27, 0, 0)
+#define PIN_PB27__QSPI1_SCK            PINMUX_PIN(PIN_PB27, 1, 1)
+#define PIN_PB27__FLEXCOM7_IO4         PINMUX_PIN(PIN_PB27, 2, 1)
+#define PIN_PB27__I2SMCC0_MCK          PINMUX_PIN(PIN_PB27, 3, 1)
+#define PIN_PB27__PWMEXTRG1            PINMUX_PIN(PIN_PB27, 5, 1)
+#define PIN_PB28                       60
+#define PIN_PB28__GPIO                 PINMUX_PIN(PIN_PB28, 0, 0)
+#define PIN_PB28__SDMMC1_RSTN          PINMUX_PIN(PIN_PB28, 1, 1)
+#define PIN_PB28__ADTRG                        PINMUX_PIN(PIN_PB28, 2, 2)
+#define PIN_PB28__PWMFI0               PINMUX_PIN(PIN_PB28, 5, 1)
+#define PIN_PB28__FLEXCOM7_IO0         PINMUX_PIN(PIN_PB28, 6, 4)
+#define PIN_PB29                       61
+#define PIN_PB29__GPIO                 PINMUX_PIN(PIN_PB29, 0, 0)
+#define PIN_PB29__SDMMC1_CMD           PINMUX_PIN(PIN_PB29, 1, 1)
+#define PIN_PB29__FLEXCOM3_IO2         PINMUX_PIN(PIN_PB29, 2, 2)
+#define PIN_PB29__FLEXCOM0_IO5         PINMUX_PIN(PIN_PB29, 3, 2)
+#define PIN_PB29__TIOA3                        PINMUX_PIN(PIN_PB29, 4, 2)
+#define PIN_PB29__PWMFI1               PINMUX_PIN(PIN_PB29, 5, 1)
+#define PIN_PB29__FLEXCOM7_IO1         PINMUX_PIN(PIN_PB29, 6, 4)
+#define PIN_PB30                       62
+#define PIN_PB30__GPIO                 PINMUX_PIN(PIN_PB30, 0, 0)
+#define PIN_PB30__SDMMC1_CK            PINMUX_PIN(PIN_PB30, 1, 1)
+#define PIN_PB30__FLEXCOM3_IO3         PINMUX_PIN(PIN_PB30, 2, 2)
+#define PIN_PB30__FLEXCOM0_IO6         PINMUX_PIN(PIN_PB30, 3, 2)
+#define PIN_PB30__TIOB3                        PINMUX_PIN(PIN_PB30, 4, 1)
+#define PIN_PB30__PWMH0                        PINMUX_PIN(PIN_PB30, 5, 1)
+#define PIN_PB30__FLEXCOM8_IO0         PINMUX_PIN(PIN_PB30, 6, 4)
+#define PIN_PB31                       63
+#define PIN_PB31__GPIO                 PINMUX_PIN(PIN_PB31, 0, 0)
+#define PIN_PB31__SDMMC1_DAT0          PINMUX_PIN(PIN_PB31, 1, 1)
+#define PIN_PB31__FLEXCOM3_IO4         PINMUX_PIN(PIN_PB31, 2, 2)
+#define PIN_PB31__FLEXCOM9_IO5         PINMUX_PIN(PIN_PB31, 3, 2)
+#define PIN_PB31__TCLK3                        PINMUX_PIN(PIN_PB31, 4, 1)
+#define PIN_PB31__PWML0                        PINMUX_PIN(PIN_PB31, 5, 1)
+#define PIN_PB31__FLEXCOM8_IO1         PINMUX_PIN(PIN_PB31, 6, 4)
+#define PIN_PC0                                64
+#define PIN_PC0__GPIO                  PINMUX_PIN(PIN_PC0, 0, 0)
+#define PIN_PC0__SDMMC1_DAT1           PINMUX_PIN(PIN_PC0, 1, 1)
+#define PIN_PC0__FLEXCOM3_IO0          PINMUX_PIN(PIN_PC0, 2, 2)
+#define PIN_PC0__TIOA4                 PINMUX_PIN(PIN_PC0, 4, 1)
+#define PIN_PC0__PWML1                 PINMUX_PIN(PIN_PC0, 5, 1)
+#define PIN_PC0__FLEXCOM9_IO0          PINMUX_PIN(PIN_PC0, 6, 4)
+#define PIN_PC1                                65
+#define PIN_PC1__GPIO                  PINMUX_PIN(PIN_PC1, 0, 0)
+#define PIN_PC1__SDMMC1_DAT2           PINMUX_PIN(PIN_PC1, 1, 1)
+#define PIN_PC1__FLEXCOM3_IO1          PINMUX_PIN(PIN_PC1, 2, 2)
+#define PIN_PC1__TIOB4                 PINMUX_PIN(PIN_PC1, 4, 1)
+#define PIN_PC1__PWMH1                 PINMUX_PIN(PIN_PC1, 5, 1)
+#define PIN_PC1__FLEXCOM9_IO1          PINMUX_PIN(PIN_PC1, 6, 4)
+#define PIN_PC2                                66
+#define PIN_PC2__GPIO                  PINMUX_PIN(PIN_PC2, 0, 0)
+#define PIN_PC2__SDMMC1_DAT3           PINMUX_PIN(PIN_PC2, 1, 1)
+#define PIN_PC2__FLEXCOM4_IO0          PINMUX_PIN(PIN_PC2, 2, 2)
+#define PIN_PC2__TCLK4                 PINMUX_PIN(PIN_PC2, 4, 1)
+#define PIN_PC2__PWML2                 PINMUX_PIN(PIN_PC2, 5, 1)
+#define PIN_PC2__FLEXCOM10_IO0         PINMUX_PIN(PIN_PC2, 6, 4)
+#define PIN_PC3                                67
+#define PIN_PC3__GPIO                  PINMUX_PIN(PIN_PC3, 0, 0)
+#define PIN_PC3__SDMMC1_WP             PINMUX_PIN(PIN_PC3, 1, 1)
+#define PIN_PC3__FLEXCOM4_IO1          PINMUX_PIN(PIN_PC3, 2, 2)
+#define PIN_PC3__TIOA5                 PINMUX_PIN(PIN_PC3, 4, 1)
+#define PIN_PC3__PWMH2                 PINMUX_PIN(PIN_PC3, 5, 1)
+#define PIN_PC3__FLEXCOM10_IO1         PINMUX_PIN(PIN_PC3, 6, 4)
+#define PIN_PC4                                68
+#define PIN_PC4__GPIO                  PINMUX_PIN(PIN_PC4, 0, 0)
+#define PIN_PC4__SDMMC1_CD             PINMUX_PIN(PIN_PC4, 1, 1)
+#define PIN_PC4__FLEXCOM4_IO2          PINMUX_PIN(PIN_PC4, 2, 2)
+#define PIN_PC4__FLEXCOM9_IO6          PINMUX_PIN(PIN_PC4, 3, 2)
+#define PIN_PC4__TIOB5                 PINMUX_PIN(PIN_PC4, 4, 1)
+#define PIN_PC4__PWML3                 PINMUX_PIN(PIN_PC4, 5, 1)
+#define PIN_PC4__FLEXCOM11_IO0         PINMUX_PIN(PIN_PC4, 6, 4)
+#define PIN_PC5                                69
+#define PIN_PC5__GPIO                  PINMUX_PIN(PIN_PC5, 0, 0)
+#define PIN_PC5__SDMMC1_1V8SEL         PINMUX_PIN(PIN_PC5, 1, 1)
+#define PIN_PC5__FLEXCOM4_IO3          PINMUX_PIN(PIN_PC5, 2, 2)
+#define PIN_PC5__FLEXCOM6_IO5          PINMUX_PIN(PIN_PC5, 3, 2)
+#define PIN_PC5__TCLK5                 PINMUX_PIN(PIN_PC5, 4, 1)
+#define PIN_PC5__PWMH3                 PINMUX_PIN(PIN_PC5, 5, 1)
+#define PIN_PC5__FLEXCOM11_IO1         PINMUX_PIN(PIN_PC5, 6, 4)
+#define PIN_PC6                                70
+#define PIN_PC6__GPIO                  PINMUX_PIN(PIN_PC6, 0, 0)
+#define PIN_PC6__FLEXCOM4_IO4          PINMUX_PIN(PIN_PC6, 2, 2)
+#define PIN_PC6__FLEXCOM6_IO6          PINMUX_PIN(PIN_PC6, 3, 2)
+#define PIN_PC7                                71
+#define PIN_PC7__GPIO                  PINMUX_PIN(PIN_PC7, 0, 0)
+#define PIN_PC7__I2SMCC0_DIN0          PINMUX_PIN(PIN_PC7, 1, 1)
+#define PIN_PC7__FLEXCOM7_IO0          PINMUX_PIN(PIN_PC7, 2, 2)
+#define PIN_PC8                                72
+#define PIN_PC8__GPIO                  PINMUX_PIN(PIN_PC8, 0, 0)
+#define PIN_PC8__I2SMCC0_DIN1          PINMUX_PIN(PIN_PC8, 1, 1)
+#define PIN_PC8__FLEXCOM7_IO1          PINMUX_PIN(PIN_PC8, 2, 2)
+#define PIN_PC9                                73
+#define PIN_PC9__GPIO                  PINMUX_PIN(PIN_PC9, 0, 0)
+#define PIN_PC9__I2SMCC0_DOUT3         PINMUX_PIN(PIN_PC9, 1, 1)
+#define PIN_PC9__FLEXCOM7_IO2          PINMUX_PIN(PIN_PC9, 2, 2)
+#define PIN_PC9__FLEXCOM1_IO0          PINMUX_PIN(PIN_PC9, 6, 4)
+#define PIN_PC10                       74
+#define PIN_PC10__GPIO                 PINMUX_PIN(PIN_PC10, 0, 0)
+#define PIN_PC10__I2SMCC0_DOUT2                PINMUX_PIN(PIN_PC10, 1, 1)
+#define PIN_PC10__FLEXCOM7_IO3         PINMUX_PIN(PIN_PC10, 2, 2)
+#define PIN_PC10__FLEXCOM1_IO1         PINMUX_PIN(PIN_PC10, 6, 4)
+#define PIN_PC11                       75
+#define PIN_PC11__GPIO                 PINMUX_PIN(PIN_PC11, 0, 0)
+#define PIN_PC11__I2SMCC1_CK           PINMUX_PIN(PIN_PC11, 1, 1)
+#define PIN_PC11__FLEXCOM7_IO4         PINMUX_PIN(PIN_PC11, 2, 2)
+#define PIN_PC11__FLEXCOM2_IO0         PINMUX_PIN(PIN_PC11, 6, 4)
+#define PIN_PC12                       76
+#define PIN_PC12__GPIO                 PINMUX_PIN(PIN_PC12, 0, 0)
+#define PIN_PC12__I2SMCC1_WS           PINMUX_PIN(PIN_PC12, 1, 1)
+#define PIN_PC12__FLEXCOM8_IO2         PINMUX_PIN(PIN_PC12, 2, 2)
+#define PIN_PC12__FLEXCOM2_IO1         PINMUX_PIN(PIN_PC12, 6, 4)
+#define PIN_PC13                       77
+#define PIN_PC13__GPIO                 PINMUX_PIN(PIN_PC13, 0, 0)
+#define PIN_PC13__I2SMCC1_MCK          PINMUX_PIN(PIN_PC13, 1, 1)
+#define PIN_PC13__FLEXCOM8_IO1         PINMUX_PIN(PIN_PC13, 2, 2)
+#define PIN_PC13__FLEXCOM3_IO0         PINMUX_PIN(PIN_PC13, 6, 4)
+#define PIN_PC14                       78
+#define PIN_PC14__GPIO                 PINMUX_PIN(PIN_PC14, 0, 0)
+#define PIN_PC14__I2SMCC1_DOUT0                PINMUX_PIN(PIN_PC14, 1, 1)
+#define PIN_PC14__FLEXCOM8_IO0         PINMUX_PIN(PIN_PC14, 2, 2)
+#define PIN_PC14__FLEXCOM3_IO1         PINMUX_PIN(PIN_PC14, 6, 4)
+#define PIN_PC15                       79
+#define PIN_PC15__GPIO                 PINMUX_PIN(PIN_PC15, 0, 0)
+#define PIN_PC15__I2SMCC1_DOUT1                PINMUX_PIN(PIN_PC15, 1, 1)
+#define PIN_PC15__FLEXCOM8_IO3         PINMUX_PIN(PIN_PC15, 2, 2)
+#define PIN_PC15__FLEXCOM4_IO0         PINMUX_PIN(PIN_PC15, 6, 4)
+#define PIN_PC16                       80
+#define PIN_PC16__GPIO                 PINMUX_PIN(PIN_PC16, 0, 0)
+#define PIN_PC16__I2SMCC1_DOUT2                PINMUX_PIN(PIN_PC16, 1, 1)
+#define PIN_PC16__FLEXCOM8_IO4         PINMUX_PIN(PIN_PC16, 2, 2)
+#define PIN_PC16__FLEXCOM3_IO1         PINMUX_PIN(PIN_PC16, 6, 4)
+#define PIN_PC17                       81
+#define PIN_PC17__GPIO                 PINMUX_PIN(PIN_PC17, 0, 0)
+#define PIN_PC17__I2SMCC1_DOUT3                PINMUX_PIN(PIN_PC17, 1, 1)
+#define PIN_PC17__EXT_IRQ0             PINMUX_PIN(PIN_PC17, 2, 3)
+#define PIN_PC17__FLEXCOM5_IO0         PINMUX_PIN(PIN_PC17, 6, 4)
+#define PIN_PC18                       82
+#define PIN_PC18__GPIO                 PINMUX_PIN(PIN_PC18, 0, 0)
+#define PIN_PC18__I2SMCC1_DIN0         PINMUX_PIN(PIN_PC18, 1, 1)
+#define PIN_PC18__FLEXCOM9_IO0         PINMUX_PIN(PIN_PC18, 2, 2)
+#define PIN_PC18__FLEXCOM5_IO1         PINMUX_PIN(PIN_PC18, 6, 4)
+#define PIN_PC19                       83
+#define PIN_PC19__GPIO                 PINMUX_PIN(PIN_PC19, 0, 0)
+#define PIN_PC19__I2SMCC1_DIN1         PINMUX_PIN(PIN_PC19, 1, 1)
+#define PIN_PC19__FLEXCOM9_IO1         PINMUX_PIN(PIN_PC19, 2, 2)
+#define PIN_PC19__FLEXCOM6_IO0         PINMUX_PIN(PIN_PC19, 6, 4)
+#define PIN_PC20                       84
+#define PIN_PC20__GPIO                 PINMUX_PIN(PIN_PC20, 0, 0)
+#define PIN_PC20__I2SMCC1_DIN2         PINMUX_PIN(PIN_PC20, 1, 1)
+#define PIN_PC20__FLEXCOM9_IO4         PINMUX_PIN(PIN_PC20, 2, 2)
+#define PIN_PC20__FLEXCOM6_IO1         PINMUX_PIN(PIN_PC20, 6, 4)
+#define PIN_PC21                       85
+#define PIN_PC21__GPIO                 PINMUX_PIN(PIN_PC21, 0, 0)
+#define PIN_PC21__I2SMCC1_DIN3         PINMUX_PIN(PIN_PC21, 1, 1)
+#define PIN_PC21__FLEXCOM9_IO2         PINMUX_PIN(PIN_PC21, 2, 2)
+#define PIN_PC21__D3                   PINMUX_PIN(PIN_PC21, 4, 2)
+#define PIN_PC21__FLEXCOM6_IO0         PINMUX_PIN(PIN_PC21, 6, 5)
+#define PIN_PC22                       86
+#define PIN_PC22__GPIO                 PINMUX_PIN(PIN_PC22, 0, 0)
+#define PIN_PC22__I2SMCC0_DIN2         PINMUX_PIN(PIN_PC22, 1, 1)
+#define PIN_PC22__FLEXCOM9_IO3         PINMUX_PIN(PIN_PC22, 2, 2)
+#define PIN_PC22__D4                   PINMUX_PIN(PIN_PC22, 4, 2)
+#define PIN_PC22__FLEXCOM6_IO1         PINMUX_PIN(PIN_PC22, 6, 5)
+#define PIN_PC23                       87
+#define PIN_PC23__GPIO                 PINMUX_PIN(PIN_PC23, 0, 0)
+#define PIN_PC23__I2SMCC0_DIN3         PINMUX_PIN(PIN_PC23, 1, 1)
+#define PIN_PC23__FLEXCOM0_IO5         PINMUX_PIN(PIN_PC23, 2, 3)
+#define PIN_PC23__D5                   PINMUX_PIN(PIN_PC23, 4, 2)
+#define PIN_PC23__FLEXCOM7_IO0         PINMUX_PIN(PIN_PC23, 6, 5)
+#define PIN_PC24                       88
+#define PIN_PC24__GPIO                 PINMUX_PIN(PIN_PC24, 0, 0)
+#define PIN_PC24__FLEXCOM0_IO6         PINMUX_PIN(PIN_PC24, 2, 3)
+#define PIN_PC24__EXT_IRQ1             PINMUX_PIN(PIN_PC24, 3, 3)
+#define PIN_PC24__D6                   PINMUX_PIN(PIN_PC24, 4, 2)
+#define PIN_PC24__FLEXCOM7_IO1         PINMUX_PIN(PIN_PC24, 6, 5)
+#define PIN_PC25                       89
+#define PIN_PC25__GPIO                 PINMUX_PIN(PIN_PC25, 0, 0)
+#define PIN_PC25__NTRST                        PINMUX_PIN(PIN_PC25, 1, 1)
+#define PIN_PC26                       90
+#define PIN_PC26__GPIO                 PINMUX_PIN(PIN_PC26, 0, 0)
+#define PIN_PC26__TCK_SWCLK            PINMUX_PIN(PIN_PC26, 1, 1)
+#define PIN_PC27                       91
+#define PIN_PC27__GPIO                 PINMUX_PIN(PIN_PC27, 0, 0)
+#define PIN_PC27__TMS_SWDIO            PINMUX_PIN(PIN_PC27, 1, 1)
+#define PIN_PC28                       92
+#define PIN_PC28__GPIO                 PINMUX_PIN(PIN_PC28, 0, 0)
+#define PIN_PC28__TDI                  PINMUX_PIN(PIN_PC28, 1, 1)
+#define PIN_PC29                       93
+#define PIN_PC29__GPIO                 PINMUX_PIN(PIN_PC29, 0, 0)
+#define PIN_PC29__TDO                  PINMUX_PIN(PIN_PC29, 1, 1)
+#define PIN_PC30                       94
+#define PIN_PC30__GPIO                 PINMUX_PIN(PIN_PC30, 0, 0)
+#define PIN_PC30__FLEXCOM10_IO0                PINMUX_PIN(PIN_PC30, 2, 2)
+#define PIN_PC31                       95
+#define PIN_PC31__GPIO                 PINMUX_PIN(PIN_PC31, 0, 0)
+#define PIN_PC31__FLEXCOM10_IO1                PINMUX_PIN(PIN_PC31, 2, 2)
+#define PIN_PD0                                96
+#define PIN_PD0__GPIO                  PINMUX_PIN(PIN_PD0, 0, 0)
+#define PIN_PD0__FLEXCOM11_IO0         PINMUX_PIN(PIN_PD0, 2, 2)
+#define PIN_PD1                                97
+#define PIN_PD1__GPIO                  PINMUX_PIN(PIN_PD1, 0, 0)
+#define PIN_PD1__FLEXCOM11_IO1         PINMUX_PIN(PIN_PD1, 2, 2)
+#define PIN_PD2                                98
+#define PIN_PD2__GPIO                  PINMUX_PIN(PIN_PD2, 0, 0)
+#define PIN_PD2__SDMMC2_RSTN           PINMUX_PIN(PIN_PD2, 1, 1)
+#define PIN_PD2__PCK0                  PINMUX_PIN(PIN_PD2, 2, 2)
+#define PIN_PD2__CANTX4                        PINMUX_PIN(PIN_PD2, 3, 1)
+#define PIN_PD2__D7                    PINMUX_PIN(PIN_PD2, 4, 2)
+#define PIN_PD2__TIOA0                 PINMUX_PIN(PIN_PD2, 5, 2)
+#define PIN_PD2__FLEXCOM8_IO0          PINMUX_PIN(PIN_PD2, 6, 5)
+#define PIN_PD3                                99
+#define PIN_PD3__GPIO                  PINMUX_PIN(PIN_PD3, 0, 0)
+#define PIN_PD3__SDMMC2_CMD            PINMUX_PIN(PIN_PD3, 1, 1)
+#define PIN_PD3__FLEXCOM0_IO0          PINMUX_PIN(PIN_PD3, 2, 2)
+#define PIN_PD3__CANRX4                        PINMUX_PIN(PIN_PD3, 3, 1)
+#define PIN_PD3__NANDRDY               PINMUX_PIN(PIN_PD3, 4, 2)
+#define PIN_PD3__TIOB0                 PINMUX_PIN(PIN_PD3, 5, 2)
+#define PIN_PD3__FLEXCOM8_IO1          PINMUX_PIN(PIN_PD3, 6, 5)
+#define PIN_PD4                                100
+#define PIN_PD4__GPIO                  PINMUX_PIN(PIN_PD4, 0, 0)
+#define PIN_PD4__SDMMC2_CK             PINMUX_PIN(PIN_PD4, 1, 1)
+#define PIN_PD4__FLEXCOM0_IO1          PINMUX_PIN(PIN_PD4, 2, 2)
+#define PIN_PD4__CANTX5                        PINMUX_PIN(PIN_PD4, 3, 1)
+#define PIN_PD4__NCS3_NANDCS           PINMUX_PIN(PIN_PD4, 4, 2)
+#define PIN_PD4__TCLK0                 PINMUX_PIN(PIN_PD4, 5, 2)
+#define PIN_PD4__FLEXCOM9_IO0          PINMUX_PIN(PIN_PD4, 6, 5)
+#define PIN_PD5                                101
+#define PIN_PD5__GPIO                  PINMUX_PIN(PIN_PD5, 0, 0)
+#define PIN_PD5__SDMMC2_DAT0           PINMUX_PIN(PIN_PD5, 1, 1)
+#define PIN_PD5__FLEXCOM0_IO2          PINMUX_PIN(PIN_PD5, 2, 2)
+#define PIN_PD5__CANRX5                        PINMUX_PIN(PIN_PD5, 3, 1)
+#define PIN_PD5__NWE_NWR0_NANDWE       PINMUX_PIN(PIN_PD5, 4, 2)
+#define PIN_PD5__TIOA1                 PINMUX_PIN(PIN_PD5, 5, 2)
+#define PIN_PD5__FLEXCOM9_IO1          PINMUX_PIN(PIN_PD5, 6, 5)
+#define PIN_PD6                                102
+#define PIN_PD6__GPIO                  PINMUX_PIN(PIN_PD6, 0, 0)
+#define PIN_PD6__SDMMC2_DAT1           PINMUX_PIN(PIN_PD6, 1, 1)
+#define PIN_PD6__FLEXCOM0_IO3          PINMUX_PIN(PIN_PD6, 2, 2)
+#define PIN_PD6__SPDIF_RX              PINMUX_PIN(PIN_PD6, 3, 3)
+#define PIN_PD6__NRD_NANDOE            PINMUX_PIN(PIN_PD6, 4, 2)
+#define PIN_PD6__TIOB1                 PINMUX_PIN(PIN_PD6, 5, 2)
+#define PIN_PD6__FLEXCOM10_IO0         PINMUX_PIN(PIN_PD6, 6, 5)
+#define PIN_PD7                                103
+#define PIN_PD7__GPIO                  PINMUX_PIN(PIN_PD7, 0, 0)
+#define PIN_PD7__SDMMC2_DAT2           PINMUX_PIN(PIN_PD7, 1, 1)
+#define PIN_PD7__FLEXCOM0_IO4          PINMUX_PIN(PIN_PD7, 2, 2)
+#define PIN_PD7__SPDIF_TX              PINMUX_PIN(PIN_PD7, 2, 2)
+#define PIN_PD7__A21_NANDALE           PINMUX_PIN(PIN_PD7, 4, 2)
+#define PIN_PD7__TCLK1                 PINMUX_PIN(PIN_PD7, 5, 2)
+#define PIN_PD7__FLEXCOM10_IO1         PINMUX_PIN(PIN_PD7, 6, 5)
+#define PIN_PD8                                104
+#define PIN_PD8__GPIO                  PINMUX_PIN(PIN_PD8, 0, 0)
+#define PIN_PD8__SDMMC2_DAT3           PINMUX_PIN(PIN_PD8, 1, 1)
+#define PIN_PD8__I2SMCC0_DIN0          PINMUX_PIN(PIN_PD8, 3, 1)
+#define PIN_PD8__A11_NANDCLE           PINMUX_PIN(PIN_PD8, 4, 2)
+#define PIN_PD8__TIOA2                 PINMUX_PIN(PIN_PD8, 5, 2)
+#define PIN_PD8__FLEXCOM11_IO0         PINMUX_PIN(PIN_PD8, 6, 5)
+#define PIN_PD9                                105
+#define PIN_PD9__GPIO                  PINMUX_PIN(PIN_PD9, 0, 0)
+#define PIN_PD9__SDMMC2_WP             PINMUX_PIN(PIN_PD9, 1, 1)
+#define PIN_PD9__I2SMCC0_DIN1          PINMUX_PIN(PIN_PD9, 3, 2)
+#define PIN_PD9__D0                    PINMUX_PIN(PIN_PD9, 4, 2)
+#define PIN_PD9__TIOB2                 PINMUX_PIN(PIN_PD9, 5, 2)
+#define PIN_PD9__FLEXCOM11_IO1         PINMUX_PIN(PIN_PD9, 6, 5)
+#define PIN_PD10                       106
+#define PIN_PD10__GPIO                 PINMUX_PIN(PIN_PD10, 0, 0)
+#define PIN_PD10__SDMMC2_CD            PINMUX_PIN(PIN_PD10, 1, 1)
+#define PIN_PD10__PCK6                 PINMUX_PIN(PIN_PD10, 2, 2)
+#define PIN_PD10__I2SMCC0_DIN2         PINMUX_PIN(PIN_PD10, 3, 2)
+#define PIN_PD10__D1                   PINMUX_PIN(PIN_PD10, 4, 2)
+#define PIN_PD10__TCLK2                        PINMUX_PIN(PIN_PD10, 5, 2)
+#define PIN_PD10__FLEXCOM0_IO0         PINMUX_PIN(PIN_PD10, 6, 3)
+#define PIN_PD11                       107
+#define PIN_PD11__GPIO                 PINMUX_PIN(PIN_PD11, 0, 0)
+#define PIN_PD11__SDMMC2_1V8SEL                PINMUX_PIN(PIN_PD11, 1, 1)
+#define PIN_PD11__PCK7                 PINMUX_PIN(PIN_PD11, 2, 2)
+#define PIN_PD11__I2SMCC0_DIN3         PINMUX_PIN(PIN_PD11, 3, 2)
+#define PIN_PD11__D2                   PINMUX_PIN(PIN_PD11, 4, 2)
+#define PIN_PD11__TIOA3                        PINMUX_PIN(PIN_PD11, 5, 2)
+#define PIN_PD11__FLEXCOM0_IO1         PINMUX_PIN(PIN_PD11, 6, 3)
+#define PIN_PD12                       108
+#define PIN_PD12__GPIO                 PINMUX_PIN(PIN_PD12, 0, 0)
+#define PIN_PD12__PCK1                 PINMUX_PIN(PIN_PD12, 1, 2)
+#define PIN_PD12__FLEXCOM1_IO0         PINMUX_PIN(PIN_PD12, 2, 2)
+#define PIN_PD12__CANTX0               PINMUX_PIN(PIN_PD12, 4, 2)
+#define PIN_PD12__TIOB3                        PINMUX_PIN(PIN_PD12, 5, 2)
+#define PIN_PD13                       109
+#define PIN_PD13__GPIO                 PINMUX_PIN(PIN_PD13, 0, 0)
+#define PIN_PD13__I2SMCC0_CK           PINMUX_PIN(PIN_PD13, 1, 2)
+#define PIN_PD13__FLEXCOM1_IO1         PINMUX_PIN(PIN_PD13, 2, 2)
+#define PIN_PD13__PWML0                        PINMUX_PIN(PIN_PD13, 3, 4)
+#define PIN_PD13__CANRX0               PINMUX_PIN(PIN_PD13, 4, 2)
+#define PIN_PD13__TCLK3                        PINMUX_PIN(PIN_PD13, 5, 2)
+#define PIN_PD14                       110
+#define PIN_PD14__GPIO                 PINMUX_PIN(PIN_PD14, 0, 0)
+#define PIN_PD14__I2SMCC0_MCK          PINMUX_PIN(PIN_PD14, 1, 2)
+#define PIN_PD14__FLEXCOM1_IO2         PINMUX_PIN(PIN_PD14, 2, 2)
+#define PIN_PD14__PWMH0                        PINMUX_PIN(PIN_PD14, 3, 4)
+#define PIN_PD14__CANTX1               PINMUX_PIN(PIN_PD14, 4, 2)
+#define PIN_PD14__TIOA4                        PINMUX_PIN(PIN_PD14, 5, 2)
+#define PIN_PD14__FLEXCOM2_IO0         PINMUX_PIN(PIN_PD14, 6, 5)
+#define PIN_PD15                       111
+#define PIN_PD15__GPIO                 PINMUX_PIN(PIN_PD15, 0, 0)
+#define PIN_PD15__I2SMCC0_WS           PINMUX_PIN(PIN_PD15, 1, 2)
+#define PIN_PD15__FLEXCOM1_IO3         PINMUX_PIN(PIN_PD15, 2, 2)
+#define PIN_PD15__PWML1                        PINMUX_PIN(PIN_PD15, 3, 4)
+#define PIN_PD15__CANRX1               PINMUX_PIN(PIN_PD15, 4, 2)
+#define PIN_PD15__TIOB4                        PINMUX_PIN(PIN_PD15, 5, 2)
+#define PIN_PD15__FLEXCOM2_IO1         PINMUX_PIN(PIN_PD15, 6, 5)
+#define PIN_PD16                       112
+#define PIN_PD16__GPIO                 PINMUX_PIN(PIN_PD16, 0, 0)
+#define PIN_PD16__I2SMCC0_DOUT0                PINMUX_PIN(PIN_PD16, 1, 2)
+#define PIN_PD16__FLEXCOM1_IO4         PINMUX_PIN(PIN_PD16, 2, 2)
+#define PIN_PD16__PWMH1                        PINMUX_PIN(PIN_PD16, 3, 4)
+#define PIN_PD16__CANTX2               PINMUX_PIN(PIN_PD16, 4, 2)
+#define PIN_PD16__TCLK4                        PINMUX_PIN(PIN_PD16, 5, 2)
+#define PIN_PD16__FLEXCOM3_IO0         PINMUX_PIN(PIN_PD16, 6, 5)
+#define PIN_PD17                       113
+#define PIN_PD17__GPIO                 PINMUX_PIN(PIN_PD17, 0, 0)
+#define PIN_PD17__I2SMCC0_DOUT1                PINMUX_PIN(PIN_PD17, 1, 2)
+#define PIN_PD17__FLEXCOM2_IO0         PINMUX_PIN(PIN_PD17, 2, 2)
+#define PIN_PD17__PWML2                        PINMUX_PIN(PIN_PD17, 3, 4)
+#define PIN_PD17__CANRX2               PINMUX_PIN(PIN_PD17, 4, 2)
+#define PIN_PD17__TIOA5                        PINMUX_PIN(PIN_PD17, 5, 2)
+#define PIN_PD17__FLEXCOM3_IO1         PINMUX_PIN(PIN_PD17, 6, 5)
+#define PIN_PD18                       114
+#define PIN_PD18__GPIO                 PINMUX_PIN(PIN_PD18, 0, 0)
+#define PIN_PD18__I2SMCC0_DOUT2                PINMUX_PIN(PIN_PD18, 1, 2)
+#define PIN_PD18__FLEXCOM2_IO1         PINMUX_PIN(PIN_PD18, 2, 2)
+#define PIN_PD18__PWMH2                        PINMUX_PIN(PIN_PD18, 3, 4)
+#define PIN_PD18__CANTX3               PINMUX_PIN(PIN_PD18, 4, 2)
+#define PIN_PD18__TIOB5                        PINMUX_PIN(PIN_PD18, 5, 2)
+#define PIN_PD18__FLEXCOM4_IO0         PINMUX_PIN(PIN_PD18, 6, 5)
+#define PIN_PD19                       115
+#define PIN_PD19__GPIO                 PINMUX_PIN(PIN_PD19, 0, 0)
+#define PIN_PD19__I2SMCC0_DOUT3                PINMUX_PIN(PIN_PD19, 1, 2)
+#define PIN_PD19__FLEXCOM2_IO2         PINMUX_PIN(PIN_PD19, 2, 2)
+#define PIN_PD19__PWML3                        PINMUX_PIN(PIN_PD19, 3, 4)
+#define PIN_PD19__CANRX3               PINMUX_PIN(PIN_PD19, 4, 2)
+#define PIN_PD19__TCLK5                        PINMUX_PIN(PIN_PD19, 5, 2)
+#define PIN_PD19__FLEXCOM4_IO1         PINMUX_PIN(PIN_PD19, 6, 5)
+#define PIN_PD20                       116
+#define PIN_PD20__GPIO                 PINMUX_PIN(PIN_PD20, 0, 0)
+#define PIN_PD20__PCK0                 PINMUX_PIN(PIN_PD20, 1, 3)
+#define PIN_PD20__FLEXCOM2_IO3         PINMUX_PIN(PIN_PD20, 2, 2)
+#define PIN_PD20__PWMH3                        PINMUX_PIN(PIN_PD20, 3, 4)
+#define PIN_PD20__CANTX4               PINMUX_PIN(PIN_PD20, 5, 2)
+#define PIN_PD20__FLEXCOM5_IO0         PINMUX_PIN(PIN_PD20, 6, 5)
+#define PIN_PD21                       117
+#define PIN_PD21__GPIO                 PINMUX_PIN(PIN_PD21, 0, 0)
+#define PIN_PD21__PCK1                 PINMUX_PIN(PIN_PD21, 1, 3)
+#define PIN_PD21__FLEXCOM2_IO4         PINMUX_PIN(PIN_PD21, 2, 2)
+#define PIN_PD21__CANRX4               PINMUX_PIN(PIN_PD21, 4, 2)
+#define PIN_PD21__FLEXCOM5_IO1         PINMUX_PIN(PIN_PD21, 6, 5)
+#define PIN_PD21__G1_TXEN              PINMUX_PIN(PIN_PD21, 7, 1)
+#define PIN_PD22                       118
+#define PIN_PD22__GPIO                 PINMUX_PIN(PIN_PD22, 0, 0)
+#define PIN_PD22__PDMC0_CLK            PINMUX_PIN(PIN_PD22, 1, 2)
+#define PIN_PD22__PWMEXTRG0            PINMUX_PIN(PIN_PD22, 3, 4)
+#define PIN_PD22__RD1                  PINMUX_PIN(PIN_PD22, 4, 2)
+#define PIN_PD22__CANTX5               PINMUX_PIN(PIN_PD22, 6, 2)
+#define PIN_PD22__G1_TX0               PINMUX_PIN(PIN_PD22, 7, 1)
+#define PIN_PD23                       119
+#define PIN_PD23__GPIO                 PINMUX_PIN(PIN_PD23, 0, 0)
+#define PIN_PD23__PDMC0_DS0            PINMUX_PIN(PIN_PD23, 1, 2)
+#define PIN_PD23__PWMEXTRG1            PINMUX_PIN(PIN_PD23, 3, 4)
+#define PIN_PD23__RF1                  PINMUX_PIN(PIN_PD23, 4, 2)
+#define PIN_PD23__ISC_MCK              PINMUX_PIN(PIN_PD23, 5, 2)
+#define PIN_PD23__CANRX5               PINMUX_PIN(PIN_PD23, 6, 2)
+#define PIN_PD23__G1_TX1               PINMUX_PIN(PIN_PD23, 7, 1)
+#define PIN_PD24                       120
+#define PIN_PD24__GPIO                 PINMUX_PIN(PIN_PD24, 0, 0)
+#define PIN_PD24__PDMC0_DS1            PINMUX_PIN(PIN_PD24, 1, 2)
+#define PIN_PD24__PWMFI0               PINMUX_PIN(PIN_PD24, 3, 4)
+#define PIN_PD24__RK1                  PINMUX_PIN(PIN_PD24, 4, 2)
+#define PIN_PD24__ISC_D0               PINMUX_PIN(PIN_PD24, 5, 2)
+#define PIN_PD24__G1_RXDV              PINMUX_PIN(PIN_PD24, 7, 1)
+#define PIN_PD25                       121
+#define PIN_PD25__GPIO                 PINMUX_PIN(PIN_PD25, 0, 0)
+#define PIN_PD25__PDMC1_CLK            PINMUX_PIN(PIN_PD25, 1, 2)
+#define PIN_PD25__FLEXCOM5_IO0         PINMUX_PIN(PIN_PD25, 2, 2)
+#define PIN_PD25__PWMFI1               PINMUX_PIN(PIN_PD25, 3, 4)
+#define PIN_PD25__TD1                  PINMUX_PIN(PIN_PD25, 4, 2)
+#define PIN_PD25__ISC_D1               PINMUX_PIN(PIN_PD25, 5, 2)
+#define PIN_PD25__G1_RX0               PINMUX_PIN(PIN_PD25, 7, 1)
+#define PIN_PD26                       122
+#define PIN_PD26__GPIO                 PINMUX_PIN(PIN_PD26, 0, 0)
+#define PIN_PD26__PDMC1_DS0            PINMUX_PIN(PIN_PD26, 1, 2)
+#define PIN_PD26__FLEXCOM5_IO1         PINMUX_PIN(PIN_PD26, 2, 2)
+#define PIN_PD26__ADTRG                        PINMUX_PIN(PIN_PD26, 3, 3)
+#define PIN_PD26__TF1                  PINMUX_PIN(PIN_PD26, 4, 2)
+#define PIN_PD26__ISC_D2               PINMUX_PIN(PIN_PD26, 5, 2)
+#define PIN_PD26__G1_RX1               PINMUX_PIN(PIN_PD26, 7, 1)
+#define PIN_PD27                       123
+#define PIN_PD27__GPIO                 PINMUX_PIN(PIN_PD27, 0, 0)
+#define PIN_PD27__PDMC1_DS1            PINMUX_PIN(PIN_PD27, 1, 2)
+#define PIN_PD27__FLEXCOM5_IO2         PINMUX_PIN(PIN_PD27, 2, 2)
+#define PIN_PD27__TIOA0                        PINMUX_PIN(PIN_PD27, 3, 3)
+#define PIN_PD27__TK1                  PINMUX_PIN(PIN_PD27, 4, 2)
+#define PIN_PD27__ISC_D3               PINMUX_PIN(PIN_PD27, 5, 2)
+#define PIN_PD27__G1_RXER              PINMUX_PIN(PIN_PD27, 7, 1)
+#define PIN_PD28                       124
+#define PIN_PD28__GPIO                 PINMUX_PIN(PIN_PD28, 0, 0)
+#define PIN_PD28__RD0                  PINMUX_PIN(PIN_PD28, 1, 2)
+#define PIN_PD28__FLEXCOM5_IO3         PINMUX_PIN(PIN_PD28, 2, 2)
+#define PIN_PD28__TIOB0                        PINMUX_PIN(PIN_PD28, 3, 3)
+#define PIN_PD28__I2SMCC1_CK           PINMUX_PIN(PIN_PD28, 4, 2)
+#define PIN_PD28__ISC_D4               PINMUX_PIN(PIN_PD28, 5, 2)
+#define PIN_PD28__PWML3                        PINMUX_PIN(PIN_PD28, 6, 5)
+#define PIN_PD28__G1_MDC               PINMUX_PIN(PIN_PD28, 7, 1)
+#define PIN_PD29                       125
+#define PIN_PD29__GPIO                 PINMUX_PIN(PIN_PD29, 0, 0)
+#define PIN_PD29__RF0                  PINMUX_PIN(PIN_PD29, 1, 2)
+#define PIN_PD29__FLEXCOM5_IO4         PINMUX_PIN(PIN_PD29, 2, 2)
+#define PIN_PD29__TCLK0                        PINMUX_PIN(PIN_PD29, 3, 3)
+#define PIN_PD29__I2SMCC1_WS           PINMUX_PIN(PIN_PD29, 4, 2)
+#define PIN_PD29__ISC_D5               PINMUX_PIN(PIN_PD29, 5, 2)
+#define PIN_PD29__PWMH3                        PINMUX_PIN(PIN_PD29, 6, 5)
+#define PIN_PD29__G1_MDIO              PINMUX_PIN(PIN_PD29, 7, 1)
+#define PIN_PD30                       126
+#define PIN_PD30__GPIO                 PINMUX_PIN(PIN_PD30, 0, 0)
+#define PIN_PD30__RK0                  PINMUX_PIN(PIN_PD30, 1, 2)
+#define PIN_PD30__FLEXCOM6_IO0         PINMUX_PIN(PIN_PD30, 2, 2)
+#define PIN_PD30__TIOA1                        PINMUX_PIN(PIN_PD30, 3, 3)
+#define PIN_PD30__I2SMCC1_MCK          PINMUX_PIN(PIN_PD30, 4, 2)
+#define PIN_PD30__ISC_D6               PINMUX_PIN(PIN_PD30, 5, 2)
+#define PIN_PD30__PWMEXTRG0            PINMUX_PIN(PIN_PD30, 6, 5)
+#define PIN_PD30__G1_TXCK              PINMUX_PIN(PIN_PD30, 7, 1)
+#define PIN_PD31                       127
+#define PIN_PD31__GPIO                 PINMUX_PIN(PIN_PD31, 0, 0)
+#define PIN_PD31__TD0                  PINMUX_PIN(PIN_PD31, 1, 2)
+#define PIN_PD31__FLEXCOM6_IO1         PINMUX_PIN(PIN_PD31, 2, 2)
+#define PIN_PD31__TIOB1                        PINMUX_PIN(PIN_PD31, 3, 3)
+#define PIN_PD31__I2SMCC1_DOUT0                PINMUX_PIN(PIN_PD31, 4, 2)
+#define PIN_PD31__ISC_D7               PINMUX_PIN(PIN_PD31, 5, 2)
+#define PIN_PD31__PWM_EXTRG1           PINMUX_PIN(PIN_PD31, 6, 5)
+#define PIN_PD31__G1_TX2               PINMUX_PIN(PIN_PD31, 7, 1)
+#define PIN_PE0                                128
+#define PIN_PE0__GPIO                  PINMUX_PIN(PIN_PE0, 0, 0)
+#define PIN_PE0__TF0                   PINMUX_PIN(PIN_PE0, 1, 2)
+#define PIN_PE0__FLEXCOM6_IO2          PINMUX_PIN(PIN_PE0, 2, 2)
+#define PIN_PE0__TCLK1                 PINMUX_PIN(PIN_PE0, 3, 3)
+#define PIN_PE0__I2SMCC1_DOUT1         PINMUX_PIN(PIN_PE0, 4, 2)
+#define PIN_PE0__ISC_HSYNC             PINMUX_PIN(PIN_PE0, 5, 2)
+#define PIN_PE0__PWMFI0                        PINMUX_PIN(PIN_PE0, 6, 5)
+#define PIN_PE0__G1_TX3                        PINMUX_PIN(PIN_PE0, 7, 1)
+#define PIN_PE1                                129
+#define PIN_PE1__GPIO                  PINMUX_PIN(PIN_PE1, 0, 0)
+#define PIN_PE1__TK0                   PINMUX_PIN(PIN_PE1, 1, 2)
+#define PIN_PE1__FLEXCOM6_IO3          PINMUX_PIN(PIN_PE1, 2, 2)
+#define PIN_PE1__TIOA2                 PINMUX_PIN(PIN_PE1, 3, 3)
+#define PIN_PE1__I2SMCC1_DOUT2         PINMUX_PIN(PIN_PE1, 4, 2)
+#define PIN_PE1__ISC_VSYNC             PINMUX_PIN(PIN_PE1, 5, 2)
+#define PIN_PE1__PWMFI1                        PINMUX_PIN(PIN_PE1, 6, 5)
+#define PIN_PE1__G1_RX2                        PINMUX_PIN(PIN_PE1, 7, 1)
+#define PIN_PE2                                130
+#define PIN_PE2__GPIO                  PINMUX_PIN(PIN_PE2, 0, 0)
+#define PIN_PE2__PWML0                 PINMUX_PIN(PIN_PE2, 1, 5)
+#define PIN_PE2__FLEXCOM6_IO4          PINMUX_PIN(PIN_PE2, 2, 2)
+#define PIN_PE2__TIOB2                 PINMUX_PIN(PIN_PE2, 3, 3)
+#define PIN_PE2__I2SMCC1_DOUT3         PINMUX_PIN(PIN_PE2, 4, 2)
+#define PIN_PE2__ISC_FIELD             PINMUX_PIN(PIN_PE2, 5, 2)
+#define PIN_PE2__G1_RX3                        PINMUX_PIN(PIN_PE2, 7, 1)
+#define PIN_PE3                                131
+#define PIN_PE3__GPIO                  PINMUX_PIN(PIN_PE3, 0, 0)
+#define PIN_PE3__PWMH0                 PINMUX_PIN(PIN_PE3, 1, 5)
+#define PIN_PE3__FLEXCOM0_IO0          PINMUX_PIN(PIN_PE3, 2, 4)
+#define PIN_PE3__TCLK2                 PINMUX_PIN(PIN_PE3, 3, 3)
+#define PIN_PE3__I2SMCC1_DIN0          PINMUX_PIN(PIN_PE3, 4, 2)
+#define PIN_PE3__ISC_PCK               PINMUX_PIN(PIN_PE3, 5, 2)
+#define PIN_PE3__G1_RXCK               PINMUX_PIN(PIN_PE3, 7, 1)
+#define PIN_PE4                                132
+#define PIN_PE4__GPIO                  PINMUX_PIN(PIN_PE4, 0, 0)
+#define PIN_PE4__PWML1                 PINMUX_PIN(PIN_PE4, 1, 5)
+#define PIN_PE4__FLEXCOM0_IO1          PINMUX_PIN(PIN_PE4, 2, 4)
+#define PIN_PE4__TIOA3                 PINMUX_PIN(PIN_PE4, 3, 3)
+#define PIN_PE4__I2SMCC1_DIN1          PINMUX_PIN(PIN_PE4, 4, 2)
+#define PIN_PE4__ISC_D8                        PINMUX_PIN(PIN_PE4, 5, 2)
+#define PIN_PE4__G1_TXER               PINMUX_PIN(PIN_PE4, 7, 1)
+#define PIN_PE5                                133
+#define PIN_PE5__GPIO                  PINMUX_PIN(PIN_PE5, 0, 0)
+#define PIN_PE5__PWMH1                 PINMUX_PIN(PIN_PE5, 1, 5)
+#define PIN_PE5__FLEXCOM0_IO2          PINMUX_PIN(PIN_PE5, 2, 4)
+#define PIN_PE5__TIOB3                 PINMUX_PIN(PIN_PE5, 3, 3)
+#define PIN_PE5__I2SMCC1_DIN2          PINMUX_PIN(PIN_PE5, 4, 2)
+#define PIN_PE5__ISC_D9                        PINMUX_PIN(PIN_PE5, 5, 2)
+#define PIN_PE5__G1_COL                        PINMUX_PIN(PIN_PE5, 7, 1)
+#define PIN_PE6                                134
+#define PIN_PE6__GPIO                  PINMUX_PIN(PIN_PE6, 0, 0)
+#define PIN_PE6__PWML2                 PINMUX_PIN(PIN_PE6, 1, 5)
+#define PIN_PE6__FLEXCOM0_IO3          PINMUX_PIN(PIN_PE6, 2, 4)
+#define PIN_PE6__TCLK3                 PINMUX_PIN(PIN_PE6, 3, 3)
+#define PIN_PE6__I2SMCC1_DIN3          PINMUX_PIN(PIN_PE6, 4, 2)
+#define PIN_PE6__ISC_D10               PINMUX_PIN(PIN_PE6, 5, 2)
+#define PIN_PE6__G1_CRS                        PINMUX_PIN(PIN_PE6, 7, 1)
+#define PIN_PE7                                135
+#define PIN_PE7__GPIO                  PINMUX_PIN(PIN_PE7, 0, 0)
+#define PIN_PE7__PWMH2                 PINMUX_PIN(PIN_PE7, 1, 5)
+#define PIN_PE7__FLEXCOM0_IO4          PINMUX_PIN(PIN_PE7, 2, 4)
+#define PIN_PE7__TIOA4                 PINMUX_PIN(PIN_PE7, 3, 3)
+#define PIN_PE7__ISC_D11               PINMUX_PIN(PIN_PE7, 5, 2)
+#define PIN_PE7__G1_TSUCOMP            PINMUX_PIN(PIN_PE7, 7, 1)
diff --git a/arch/arm/boot/dts/sama7g5.dtsi b/arch/arm/boot/dts/sama7g5.dtsi
new file mode 100644 (file)
index 0000000..cc6be6d
--- /dev/null
@@ -0,0 +1,528 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ *  sama7g5.dtsi - Device Tree Include file for SAMA7G5 family SoC
+ *
+ *  Copyright (C) 2020 Microchip Technology, Inc. and its subsidiaries
+ *
+ *  Author: Eugen Hristev <eugen.hristev@microchip.com>
+ *  Author: Claudiu Beznea <claudiu.beznea@microchip.com>
+ *
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/at91.h>
+#include <dt-bindings/dma/at91.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Microchip SAMA7G5 family SoC";
+       compatible = "microchip,sama7g5";
+       #address-cells = <1>;
+       #size-cells = <1>;
+       interrupt-parent = <&gic>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x0>;
+               };
+       };
+
+       clocks {
+               slow_xtal: slow_xtal {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+               };
+
+               main_xtal: main_xtal {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+               };
+
+               usb_clk: usb_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <48000000>;
+               };
+       };
+
+       vddout25: fixed-regulator-vddout25 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VDDOUT25";
+               regulator-min-microvolt = <2500000>;
+               regulator-max-microvolt = <2500000>;
+               regulator-boot-on;
+               status = "disabled";
+       };
+
+       ns_sram: sram@100000 {
+               compatible = "mmio-sram";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x100000 0x20000>;
+               ranges;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               secumod: secumod@e0004000 {
+                       compatible = "microchip,sama7g5-secumod", "atmel,sama5d2-secumod", "syscon";
+                       reg = <0xe0004000 0x4000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
+               sfrbu: sfr@e0008000 {
+                       compatible = "microchip,sama7g5-sfrbu", "atmel,sama5d2-sfrbu", "syscon";
+                       reg = <0xe0008000 0x20>;
+               };
+
+               pioA: pinctrl@e0014000 {
+                       compatible = "microchip,sama7g5-pinctrl";
+                       reg = <0xe0014000 0x800>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 11>;
+               };
+
+               pmc: pmc@e0018000 {
+                       compatible = "microchip,sama7g5-pmc", "syscon";
+                       reg = <0xe0018000 0x200>;
+                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                       #clock-cells = <2>;
+                       clocks = <&clk32k 1>, <&clk32k 0>, <&main_xtal>;
+                       clock-names = "td_slck", "md_slck", "main_xtal";
+               };
+
+               rtt: rtt@e001d020 {
+                       compatible = "microchip,sama7g5-rtt", "microchip,sam9x60-rtt", "atmel,at91sam9260-rtt";
+                       reg = <0xe001d020 0x30>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 0>;
+               };
+
+               clk32k: clock-controller@e001d050 {
+                       compatible = "microchip,sama7g5-sckc", "microchip,sam9x60-sckc";
+                       reg = <0xe001d050 0x4>;
+                       clocks = <&slow_xtal>;
+                       #clock-cells = <1>;
+               };
+
+               gpbr: gpbr@e001d060 {
+                       compatible = "microchip,sama7g5-gpbr", "syscon";
+                       reg = <0xe001d060 0x48>;
+               };
+
+               ps_wdt: watchdog@e001d180 {
+                       compatible = "microchip,sama7g5-wdt";
+                       reg = <0xe001d180 0x24>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 0>;
+               };
+
+               sdmmc0: mmc@e1204000 {
+                       compatible = "microchip,sama7g5-sdhci", "microchip,sam9x60-sdhci";
+                       reg = <0xe1204000 0x4000>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 80>, <&pmc PMC_TYPE_GCK 80>;
+                       clock-names = "hclock", "multclk";
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_SYSPLL>;
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 80>;
+                       assigned-clock-rates = <200000000>;
+                       microchip,sdcal-inverted;
+                       status = "disabled";
+               };
+
+               sdmmc1: mmc@e1208000 {
+                       compatible = "microchip,sama7g5-sdhci", "microchip,sam9x60-sdhci";
+                       reg = <0xe1208000 0x4000>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 81>, <&pmc PMC_TYPE_GCK 81>;
+                       clock-names = "hclock", "multclk";
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_SYSPLL>;
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 81>;
+                       assigned-clock-rates = <200000000>;
+                       microchip,sdcal-inverted;
+                       status = "disabled";
+               };
+
+               sdmmc2: mmc@e120c000 {
+                       compatible = "microchip,sama7g5-sdhci", "microchip,sam9x60-sdhci";
+                       reg = <0xe120c000 0x4000>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 82>, <&pmc PMC_TYPE_GCK 82>;
+                       clock-names = "hclock", "multclk";
+                       assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_SYSPLL>;
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 82>;
+                       assigned-clock-rates = <200000000>;
+                       microchip,sdcal-inverted;
+                       status = "disabled";
+               };
+
+               pwm: pwm@e1604000 {
+                       compatible = "microchip,sama7g5-pwm", "atmel,sama5d2-pwm";
+                       reg = <0xe1604000 0x4000>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                       #pwm-cells = <3>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 77>;
+                       status = "disabled";
+               };
+
+               spdifrx: spdifrx@e1614000 {
+                       #sound-dai-cells = <0>;
+                       compatible = "microchip,sama7g5-spdifrx";
+                       reg = <0xe1614000 0x4000>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(49)>;
+                       dma-names = "rx";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 84>, <&pmc PMC_TYPE_GCK 84>;
+                       clock-names = "pclk", "gclk";
+                       status = "disabled";
+               };
+
+               spdiftx: spdiftx@e1618000 {
+                       #sound-dai-cells = <0>;
+                       compatible = "microchip,sama7g5-spdiftx";
+                       reg = <0xe1618000 0x4000>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(50)>;
+                       dma-names = "tx";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 85>, <&pmc PMC_TYPE_GCK 85>;
+                       clock-names = "pclk", "gclk";
+               };
+
+               i2s0: i2s@e161c000 {
+                       compatible = "microchip,sama7g5-i2smcc";
+                       #sound-dai-cells = <0>;
+                       reg = <0xe161c000 0x4000>;
+                       interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(34)>, <&dma0 AT91_XDMAC_DT_PERID(33)>;
+                       dma-names = "tx", "rx";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 57>, <&pmc PMC_TYPE_GCK 57>;
+                       clock-names = "pclk", "gclk";
+                       status = "disabled";
+               };
+
+               i2s1: i2s@e1620000 {
+                       compatible = "microchip,sama7g5-i2smcc";
+                       #sound-dai-cells = <0>;
+                       reg = <0xe1620000 0x4000>;
+                       interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dma0 AT91_XDMAC_DT_PERID(36)>, <&dma0 AT91_XDMAC_DT_PERID(35)>;
+                       dma-names = "tx", "rx";
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 58>, <&pmc PMC_TYPE_GCK 58>;
+                       clock-names = "pclk", "gclk";
+                       status = "disabled";
+               };
+
+               pit64b0: timer@e1800000 {
+                       compatible = "microchip,sama7g5-pit64b", "microchip,sam9x60-pit64b";
+                       reg = <0xe1800000 0x4000>;
+                       interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 70>, <&pmc PMC_TYPE_GCK 70>;
+                       clock-names = "pclk", "gclk";
+               };
+
+               pit64b1: timer@e1804000 {
+                       compatible = "microchip,sama7g5-pit64b", "microchip,sam9x60-pit64b";
+                       reg = <0xe1804000 0x4000>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 71>, <&pmc PMC_TYPE_GCK 71>;
+                       clock-names = "pclk", "gclk";
+               };
+
+               flx0: flexcom@e1818000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe1818000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 38>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe1818000 0x800>;
+                       status = "disabled";
+
+                       uart0: serial@200 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 38>;
+                               clock-names = "usart";
+                               dmas = <&dma1 AT91_XDMAC_DT_PERID(6)>,
+                                       <&dma1 AT91_XDMAC_DT_PERID(5)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               status = "disabled";
+                       };
+               };
+
+               flx1: flexcom@e181c000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe181c000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe181c000 0x800>;
+                       status = "disabled";
+
+                       i2c1: i2c@600 {
+                               compatible = "microchip,sama7g5-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
+                               atmel,fifo-size = <32>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(7)>,
+                                       <&dma0 AT91_XDMAC_DT_PERID(8)>;
+                               dma-names = "rx", "tx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               status = "disabled";
+                       };
+               };
+
+               flx3: flexcom@e1824000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe1824000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 41>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe1824000 0x800>;
+                       status = "disabled";
+
+                       uart3: serial@200 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 41>;
+                               clock-names = "usart";
+                               dmas = <&dma1 AT91_XDMAC_DT_PERID(12)>,
+                                       <&dma1 AT91_XDMAC_DT_PERID(11)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               status = "disabled";
+                       };
+               };
+
+               trng: rng@e2010000 {
+                       compatible = "microchip,sama7g5-trng", "atmel,at91sam9g45-trng";
+                       reg = <0xe2010000 0x100>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 97>;
+                       status = "disabled";
+               };
+
+               flx4: flexcom@e2018000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe2018000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 42>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe2018000 0x800>;
+                       status = "disabled";
+
+                       uart4: serial@200 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 42>;
+                               clock-names = "usart";
+                               dmas = <&dma1 AT91_XDMAC_DT_PERID(14)>,
+                                       <&dma1 AT91_XDMAC_DT_PERID(13)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               atmel,fifo-size = <16>;
+                               status = "disabled";
+                       };
+               };
+
+               flx7: flexcom@e2024000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe2024000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 45>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe2024000 0x800>;
+                       status = "disabled";
+
+                       uart7: serial@200 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 45>;
+                               clock-names = "usart";
+                               dmas = <&dma1 AT91_XDMAC_DT_PERID(20)>,
+                                       <&dma1 AT91_XDMAC_DT_PERID(19)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               atmel,fifo-size = <16>;
+                               status = "disabled";
+                       };
+               };
+
+               gmac0: ethernet@e2800000 {
+                       compatible = "microchip,sama7g5-gem";
+                       reg = <0xe2800000 0x1000>;
+                       interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 51>, <&pmc PMC_TYPE_PERIPHERAL 51>, <&pmc PMC_TYPE_GCK 51>, <&pmc PMC_TYPE_GCK 53>;
+                       clock-names = "pclk", "hclk", "tx_clk", "tsu_clk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 51>;
+                       assigned-clock-rates = <125000000>;
+                       status = "disabled";
+               };
+
+               gmac1: ethernet@e2804000 {
+                       compatible = "microchip,sama7g5-emac";
+                       reg = <0xe2804000 0x1000>;
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 52>, <&pmc PMC_TYPE_PERIPHERAL 52>;
+                       clock-names = "pclk", "hclk";
+                       status = "disabled";
+               };
+
+               dma0: dma-controller@e2808000 {
+                       compatible = "microchip,sama7g5-dma";
+                       reg = <0xe2808000 0x1000>;
+                       interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 22>;
+                       clock-names = "dma_clk";
+                       status = "disabled";
+               };
+
+               dma1: dma-controller@e280c000 {
+                       compatible = "microchip,sama7g5-dma";
+                       reg = <0xe280c000 0x1000>;
+                       interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 23>;
+                       clock-names = "dma_clk";
+                       status = "disabled";
+               };
+
+               /* Place dma2 here despite it's address */
+               dma2: dma-controller@e1200000 {
+                       compatible = "microchip,sama7g5-dma";
+                       reg = <0xe1200000 0x1000>;
+                       interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 24>;
+                       clock-names = "dma_clk";
+                       dma-requests = <0>;
+                       status = "disabled";
+               };
+
+               flx8: flexcom@e2818000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe2818000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe2818000 0x800>;
+                       status = "disabled";
+
+                       i2c8: i2c@600 {
+                               compatible = "microchip,sama7g5-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
+                               atmel,fifo-size = <32>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(21)>,
+                                       <&dma0 AT91_XDMAC_DT_PERID(22)>;
+                               dma-names = "rx", "tx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               status = "disabled";
+                       };
+               };
+
+               flx9: flexcom@e281c000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe281c000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 47>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe281c000 0x800>;
+                       status = "disabled";
+
+                       i2c9: i2c@600 {
+                               compatible = "microchip,sama7g5-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 47>;
+                               atmel,fifo-size = <32>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(23)>,
+                                       <&dma0 AT91_XDMAC_DT_PERID(24)>;
+                               dma-names = "rx", "tx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               status = "disabled";
+                       };
+               };
+
+               flx11: flexcom@e2824000 {
+                       compatible = "atmel,sama5d2-flexcom";
+                       reg = <0xe2824000 0x200>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 49>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0xe2824000 0x800>;
+                       status = "disabled";
+
+                       spi11: spi@400 {
+                               compatible = "atmel,at91rm9200-spi";
+                               reg = <0x400 0x200>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 49>;
+                               clock-names = "spi_clk";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               atmel,fifo-size = <32>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(27)>,
+                                           <&dma0 AT91_XDMAC_DT_PERID(28)>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+               };
+
+               gic: interrupt-controller@e8c11000 {
+                       compatible = "arm,cortex-a7-gic";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       interrupt-parent;
+                       reg = <0xe8c11000 0x1000>,
+                               <0xe8c12000 0x2000>;
+               };
+       };
+};
index d0fe3f9..9baf927 100644 (file)
                                        #io-channel-cells = <1>;
 
                                        /* GPADC channels */
-                                       bat_ctrl: channel@01 {
+                                       bat_ctrl: channel@1 {
                                                reg = <0x01>;
                                        };
-                                       btemp_ball: channel@02 {
+                                       btemp_ball: channel@2 {
                                                reg = <0x02>;
                                        };
-                                       main_charger_v: channel@03 {
+                                       main_charger_v: channel@3 {
                                                reg = <0x03>;
                                        };
-                                       acc_detect1: channel@04 {
+                                       acc_detect1: channel@4 {
                                                reg = <0x04>;
                                        };
-                                       acc_detect2: channel@05 {
+                                       acc_detect2: channel@5 {
                                                reg = <0x05>;
                                        };
-                                       adc_aux1: channel@06 {
+                                       adc_aux1: channel@6 {
                                                reg = <0x06>;
                                        };
-                                       adc_aux2: channel@07 {
+                                       adc_aux2: channel@7 {
                                                reg = <0x07>;
                                        };
-                                       main_batt_v: channel@08 {
+                                       main_batt_v: channel@8 {
                                                reg = <0x08>;
                                        };
-                                       vbus_v: channel@09 {
+                                       vbus_v: channel@9 {
                                                reg = <0x09>;
                                        };
-                                       main_charger_c: channel@0a {
+                                       main_charger_c: channel@a {
                                                reg = <0x0a>;
                                        };
-                                       usb_charger_c: channel@0b {
+                                       usb_charger_c: channel@b {
                                                reg = <0x0b>;
                                        };
-                                       bk_bat_v: channel@0c {
+                                       bk_bat_v: channel@c {
                                                reg = <0x0c>;
                                        };
-                                       die_temp: channel@0d {
+                                       die_temp: channel@d {
                                                reg = <0x0d>;
                                        };
-                                       usb_id: channel@0e {
+                                       usb_id: channel@e {
                                                reg = <0x0e>;
                                        };
                                        xtal_temp: channel@12 {
                                        battery         = <&ab8500_battery>;
                                };
 
-                               ab8500_usb {
+                               ab8500_usb: ab8500_usb {
                                        compatible = "stericsson,ab8500-usb";
                                        interrupts = <90 IRQ_TYPE_LEVEL_HIGH>,
                                                     <96 IRQ_TYPE_LEVEL_HIGH>,
                                        musb_1v8-supply = <&db8500_vsmps2_reg>;
                                        clocks = <&prcmu_clk PRCMU_SYSCLK>;
                                        clock-names = "sysclk";
+                                       #phy-cells = <0>;
                                };
 
                                ab8500-ponkey {
                                vana-supply = <&ab8500_ldo_ana_reg>;
                        };
                };
+
+               usb_per5@a03e0000 {
+                       phys = <&ab8500_usb>;
+                       phy-names = "usb";
+               };
        };
 };
index 0defc15..8d01870 100644 (file)
                                        #io-channel-cells = <1>;
 
                                        /* GPADC channels */
-                                       bat_ctrl: channel@01 {
+                                       bat_ctrl: channel@1 {
                                                reg = <0x01>;
                                        };
-                                       btemp_ball: channel@02 {
+                                       btemp_ball: channel@2 {
                                                reg = <0x02>;
                                        };
-                                       acc_detect1: channel@04 {
+                                       acc_detect1: channel@4 {
                                                reg = <0x04>;
                                        };
-                                       acc_detect2: channel@05 {
+                                       acc_detect2: channel@5 {
                                                reg = <0x05>;
                                        };
-                                       adc_aux1: channel@06 {
+                                       adc_aux1: channel@6 {
                                                reg = <0x06>;
                                        };
-                                       adc_aux2: channel@07 {
+                                       adc_aux2: channel@7 {
                                                reg = <0x07>;
                                        };
-                                       main_batt_v: channel@08 {
+                                       main_batt_v: channel@8 {
                                                reg = <0x08>;
                                        };
-                                       vbus_v: channel@09 {
+                                       vbus_v: channel@9 {
                                                reg = <0x09>;
                                        };
-                                       charger_c: channel@0b {
+                                       charger_c: channel@b {
                                                reg = <0x0b>;
                                        };
-                                       bk_bat_v: channel@0c {
+                                       bk_bat_v: channel@c {
                                                reg = <0x0c>;
                                        };
-                                       die_temp: channel@0d {
+                                       die_temp: channel@d {
                                                reg = <0x0d>;
                                        };
-                                       usb_id: channel@0e {
+                                       usb_id: channel@e {
                                                reg = <0x0e>;
                                        };
                                };
                                        musb_1v8-supply = <&db8500_vsmps2_reg>;
                                        clocks = <&prcmu_clk PRCMU_SYSCLK>;
                                        clock-names = "sysclk";
+                                       #phy-cells = <0>;
                                };
 
                                ab8500-ponkey {
                                vana-supply = <&ab8500_ldo_ana_reg>;
                        };
                };
+
+               usb_per5@a03e0000 {
+                       phys = <&ab8500_usb>;
+                       phy-names = "usb";
+               };
        };
 };
index 344d298..f1ff3f4 100644 (file)
@@ -5,11 +5,10 @@
 / {
        cpus {
                cpu@300 {
-                       /* cpufreq controls */
                        operating-points = <998400 0
-                                           800000 0
-                                           400000 0
-                                           200000 0>;
+                                           798720 0
+                                           399360 0
+                                           199680 0>;
                };
        };
 
                ranges;
 
                /* Modem trace memory */
-               ram@06000000 {
+               ram@6000000 {
                        reg = <0x06000000 0x00f00000>;
                        no-map;
                };
 
                /* Modem shared memory */
-               ram@06f00000 {
+               ram@6f00000 {
                        reg = <0x06f00000 0x00100000>;
                        no-map;
                };
 
                /* Modem private memory */
-               ram@07000000 {
+               ram@7000000 {
                        reg = <0x07000000 0x01000000>;
                        no-map;
                };
index 287804e..e4e8d5f 100644 (file)
@@ -5,11 +5,10 @@
 / {
        cpus {
                cpu@300 {
-                       /* cpufreq controls */
                        operating-points = <1152000 0
-                                           800000 0
-                                           400000 0
-                                           200000 0>;
+                                           798720 0
+                                           399360 0
+                                           199680 0>;
                };
        };
 
                ranges;
 
                /* Modem trace memory */
-               ram@06000000 {
+               ram@6000000 {
                        reg = <0x06000000 0x00f00000>;
                        no-map;
                };
 
                /* Modem shared memory */
-               ram@06f00000 {
+               ram@6f00000 {
                        reg = <0x06f00000 0x00100000>;
                        no-map;
                };
 
                /* Modem private memory */
-               ram@07000000 {
+               ram@7000000 {
                        reg = <0x07000000 0x01000000>;
                        no-map;
                };
index 0afff70..4273d36 100644 (file)
@@ -5,11 +5,10 @@
 / {
        cpus {
                cpu@300 {
-                       /* cpufreq controls */
-                       operating-points = <1152000 0
-                                           800000 0
-                                           400000 0
-                                           200000 0>;
+                       operating-points = <998400 0
+                                           798720 0
+                                           399360 0
+                                           199680 0>;
                };
        };
 
index 7bf7a2d..31a8660 100644 (file)
        };
 
        i2c2 {
+               i2c2_b_1_default: i2c2_b_1_default {
+                       default_mux {
+                               function = "i2c2";
+                               groups = "i2c2_b_1";
+                       };
+                       default_cfg1 {
+                               pins = "GPIO8_AD5", "GPIO9_AE4"; /* SDA/SCL */
+                               ste,config = <&in_nopull>;
+                       };
+               };
+
+               i2c2_b_1_sleep: i2c2_b_1_sleep {
+                       sleep_cfg1 {
+                               pins = "GPIO8_AD5", "GPIO9_AE4"; /* SDA/SCL */
+                               ste,config = <&slpm_in_wkup_pdis>;
+                       };
+               };
+
                i2c2_b_2_default: i2c2_b_2_default {
                        default_mux {
                                function = "i2c2";
index c97e8d2..961f2c7 100644 (file)
                        bus-width = <8>;
                        cap-mmc-highspeed;
                        non-removable;
+                       no-sdio;
+                       no-sd;
                        vmmc-supply = <&db8500_vsmps2_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc2_a_1_default>;
                        bus-width = <8>;
                        cap-mmc-highspeed;
                        non-removable;
+                       no-sdio;
+                       no-sd;
                        vmmc-supply = <&ab8500_ldo_aux2_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc4_a_1_default>;
index 40f1d7c..934fc78 100644 (file)
                        max-frequency = <100000000>;
                        bus-width = <8>;
                        cap-mmc-highspeed;
+                       no-sdio;
+                       no-sd;
                        vmmc-supply = <&ab8500_ldo_aux2_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc4_a_1_default>;
diff --git a/arch/arm/boot/dts/ste-ux500-samsung-codina.dts b/arch/arm/boot/dts/ste-ux500-samsung-codina.dts
new file mode 100644 (file)
index 0000000..952606e
--- /dev/null
@@ -0,0 +1,863 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Devicetree for the Samsung Galaxy Ace 2 GT-I8160 also known as Codina.
+ *
+ * NOTE: this is the most common variant according to the vendor tree, known
+ * as "R0.0". There appears to be a "R0.4" variant with backlight on GPIO69,
+ * AB8505 and other changes. There is also talk about some variants having a
+ * Samsung S6D27A1 display, indicated by passing a different command line from
+ * the boot loader.
+ *
+ * The Samsung tree further talks about GT-I8160P and GT-I8160chn (China).
+ * The GT-I8160 plain is knonw as the "europe" variant.
+ * The GT-I8160P appears to not use the ST Microelectronics accelerometer.
+ * The GT-I8160chn appears to be the same as the europe variant.
+ */
+
+/dts-v1/;
+#include "ste-db8500.dtsi"
+#include "ste-ab8500.dtsi"
+#include "ste-dbx5x0-pinctrl.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy Ace 2 (GT-I8160)";
+       compatible = "samsung,codina", "st-ericsson,u8500";
+
+       cpus {
+               cpu@300 {
+                       /*
+                        * This has a frequency cap at ~800 MHz in the firmware.
+                        * (Changing this number here will not overclock it.)
+                        */
+                       operating-points = <798720 0
+                                           399360 0
+                                           199680 0>;
+               };
+       };
+
+       chosen {
+               stdout-path = &serial2;
+       };
+
+       /* TI TXS0206 level translator for 2.9 V */
+       sd_level_translator: regulator-gpio {
+               compatible = "regulator-fixed";
+
+               /* GPIO87 EN */
+               gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               regulator-name = "sd-level-translator";
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-type = "voltage";
+
+               startup-delay-us = <200>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&sd_level_translator_default>;
+       };
+
+       /* External LDO MIC5366-3.3YMT for eMMC */
+       ldo_3v3_reg: regulator-gpio-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VMEM_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio6 31 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <5000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&emmc_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh "TSP" regulator for the touchscreen.
+        * One GPIO line controls two voltages of 3.3V and 1.8V
+        * this line is known as "TSP_LDO_ON1" in the schematics.
+        */
+       ldo_tsp_3v3_reg: regulator-gpio-tsp-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "LDO_TSP_A3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+       ldo_tsp_1v8_reg: regulator-gpio-tsp-ldo-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_TSP_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
+        * LCD_PWR_EN controls both a 3.0V and 1.8V output.
+        */
+       lcd_3v0_reg: regulator-gpio-lcd-3v0 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_3.0V";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               /* GPIO219 controls this regulator */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+       lcd_1v8_reg: regulator-gpio-lcd-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO219 controls this regulator too */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+
+       /*
+        * This regulator is a GPIO line that drives the Broadcom WLAN
+        * line WL_REG_ON high and enables the internal regulators
+        * inside the chip. Unfortunatley it is erroneously named
+        * WLAN_RST_N on the schematic but it is not a reset line.
+        *
+        * The voltage specified here is only used to determine the OCR mask,
+        * the for the SDIO connector, the chip is actually connected
+        * directly to VBAT.
+        */
+       wl_reg: regulator-gpio-wlan {
+               compatible = "regulator-fixed";
+               regulator-name = "WL_REG_ON";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               startup-delay-us = <100000>;
+               /* GPIO215 (WLAN_RST_N to WL_REG_ON) */
+               gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_ldo_en_default>;
+       };
+
+       vibrator {
+               compatible = "gpio-vibrator";
+               /* GPIO195 "MOT_EN" */
+               enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vibrator_default>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_default_mode>;
+
+               button-home {
+                       linux,code = <KEY_HOME>;
+                       label = "HOME";
+                       /* GPIO91 */
+                       gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
+               };
+               button-volup {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "VOL+";
+                       /* GPIO67 */
+                       gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+               };
+               button-voldown {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "VOL-";
+                       /* GPIO92 */
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_leds_default_mode>;
+               touchkey-led {
+                       label = "touchkeys";
+                       /*
+                        * GPIO194 on R0.0, R0.4 does not use this at all, it
+                        * will instead turn LDO AUX4 on/off for key led backlighy.
+                        * (Line is pulled down on R0.4)
+                        */
+                       gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       ktd253: backlight {
+               compatible = "kinetic,ktd253";
+               /*
+                * GPIO68 is for R0.0, the board file talks about a TMO variant
+                * (R0.4) using GPIO69.
+                */
+               enable-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
+               /* Default to 13/32 brightness */
+               default-brightness = <13>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ktd253_backlight_default_mode>;
+       };
+
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
+       /* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
+       i2c-gpio-0 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               magnetometer@c {
+                       compatible = "alps,hscdtd008a";
+                       reg = <0x0c>;
+                       clock-frequency = <400000>;
+
+                       avdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                       dvdd-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+               };
+               /* TODO: this should also be used by the SM5103 Camera power management unit */
+       };
+
+       /* Bit-banged I2C on GPIO151 and GPIO152 also called "NFC I2C" */
+       i2c-gpio-1 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_1_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* TODO: add the NFC chip here */
+       };
+
+       spi-gpio-0 {
+               compatible = "spi-gpio";
+               /* Clock on GPIO220, pin SCL */
+               sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
+               /* MOSI on GPIO224, pin SDI "slave data in" */
+               mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
+               /* MISO on GPIO225, pin SDO "slave data out" */
+               miso-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
+               /* Chip select on GPIO201 */
+               cs-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
+               num-chipselects = <1>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /*
+                * Some Codinas (90%) have a WideChips WS2401-based LMS380KF01
+                * display mounted and some 10% has a Samsung S6D27A1 instead.
+                * The boot loader needs to modify this compatible to
+                * correspond to whatever is passed from the early Samsung boot.
+                */
+               panel@0 {
+                       compatible = "samsung,lms380kf01";
+                       spi-max-frequency = <1200000>;
+                       /* TYPE 3: inverse clock polarity and phase */
+                       spi-cpha;
+                       spi-cpol;
+
+                       reg = <0>;
+                       vci-supply = <&lcd_3v0_reg>;
+                       vccio-supply = <&lcd_1v8_reg>;
+
+                       /* Reset on GPIO139 */
+                       reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+                       /* LCD_VGH/LCD_DETECT, ESD IRQ on GPIO93 */
+                       interrupt-parent = <&gpio2>;
+                       interrupts = <29 IRQ_TYPE_EDGE_RISING>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&panel_default_mode>;
+                       backlight = <&ktd253>;
+
+                       port {
+                               panel_in: endpoint {
+                                       remote-endpoint = <&display_out>;
+                               };
+                       };
+               };
+       };
+
+       soc {
+               /* External Micro SD slot */
+               mmc@80126000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <4>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       st,sig-pin-fbclk;
+                       full-pwr-cycle;
+                       /* MMC is powered by AUX3 1.2V .. 2.91V */
+                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
+                       /* 2.9 V level translator is using AUX3 at 2.9 V as well */
+                       vqmmc-supply = <&sd_level_translator>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc0_a_2_default>;
+                       pinctrl-1 = <&mc0_a_2_sleep>;
+                       cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>; // GPIO217
+                       status = "okay";
+               };
+
+               /* WLAN SDIO channel */
+               mmc@80118000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       non-removable;
+                       cap-sd-highspeed;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc1_a_2_default>;
+                       pinctrl-1 = <&mc1_a_2_sleep>;
+                       /*
+                        * GPIO-controlled voltage enablement: this drives
+                        * the WL_REG_ON line high when we use this device.
+                        * Represented as regulator to fill OCR mask.
+                        */
+                       vmmc-supply = <&wl_reg>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       wifi@1 {
+                               /* Actually BRCM4330 */
+                               compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
+                               reg = <1>;
+                               /* GPIO216 WL_HOST_WAKE */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
+                               interrupt-names = "host-wake";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&wlan_default_mode>;
+                       };
+               };
+
+               /* eMMC */
+               mmc@80005000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <8>;
+                       non-removable;
+                       cap-mmc-highspeed;
+                       mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
+                       vmmc-supply = <&ldo_3v3_reg>;
+                       pinctrl-names = "default", "sleep";
+                       /*
+                        * GPIO130 will be set to input no pull-up resulting in a resistor
+                        * pulling the reset high and taking the memory out of reset.
+                        */
+                       pinctrl-0 = <&mc2_a_1_default>;
+                       pinctrl-1 = <&mc2_a_1_sleep>;
+                       status = "okay";
+               };
+
+               /* GBF (Bluetooth) UART */
+               uart@80120000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u0_a_1_default>;
+                       pinctrl-1 = <&u0_a_1_sleep>;
+                       status = "okay";
+
+                       bluetooth {
+                               compatible = "brcm,bcm4330-bt";
+                               /* GPIO222 rail BT_VREG_EN to BT_REG_ON */
+                               shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+                               /* BT_WAKE on GPIO199 */
+                               device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+                               /* BT_HOST_WAKE on GPIO97 */
+                               /* FIXME: convert to interrupt */
+                               host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+                               /* BT_RST_N on GPIO209 */
+                               reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&bluetooth_default_mode>;
+                       };
+               };
+
+               /* GPS UART */
+               uart@80121000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       /* CTS/RTS is not used, CTS is repurposed as GPIO */
+                       pinctrl-0 = <&u1rxtx_a_1_default>;
+                       pinctrl-1 = <&u1rxtx_a_1_sleep>;
+                       /* FIXME: add a device for the GPS here */
+               };
+
+               /* Debugging console UART connected to TSU6111RSVR (FSA880) */
+               uart@80007000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u2rxtx_c_1_default>;
+                       pinctrl-1 = <&u2rxtx_c_1_sleep>;
+               };
+
+               prcmu@80157000 {
+                       ab8500 {
+                               ab8500_usb {
+                                       pinctrl-names = "default", "sleep";
+                                       pinctrl-0 = <&usb_a_1_default>;
+                                       pinctrl-1 = <&usb_a_1_sleep>;
+                               };
+
+                               ab8500-regulators {
+                                       ab8500_ldo_aux1 {
+                                               /* Used for VDD for sensors */
+                                               regulator-name = "V-SENSORS-VDD";
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <3000000>;
+                                       };
+
+                                       ab8500_ldo_aux2 {
+                                               /* Used for VIO for sensors */
+                                               regulator-name = "V-SENSORS-VIO";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ab8500_ldo_aux3 {
+                                               /* Used for voltage for external MMC/SD card */
+                                               regulator-name = "V-MMC-SD";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <2910000>;
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C0 also known as "AGC I2C" */
+               i2c@80004000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c0_a_1_default>;
+                       pinctrl-1 = <&i2c0_a_1_sleep>;
+
+                       /* TODO: write bindings and driver for this proximity sensor */
+                       proximity@39 {
+                               /* Codina has the Mouser TMD2672 */
+                               compatible = "mouser,tmd2672";
+                               clock-frequency = <400000>;
+                               reg = <0x39>;
+
+                               /* IRQ on GPIO146 "PS_INT" */
+                               interrupt-parent = <&gpio4>;
+                               interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
+                               /* FIXME: needs a VDDIO supply that is connected to a pull-up resistor */
+                               vdd-supply = <&ab8500_ldo_aux1_reg>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tms2672_codina_default>;
+                       };
+               };
+
+               /* I2C1 on GPIO16 and GPIO17 also called "MUS I2C" */
+               i2c@80122000 {
+                       status = "okay";
+                       pinctrl-names = "default","sleep";
+                       /* FIXME: If it doesn't work try what we use on Gavini */
+                       pinctrl-0 = <&i2c1_b_2_default>;
+                       pinctrl-1 = <&i2c1_b_2_sleep>;
+
+                       /* Texas Instruments TSU6111 micro USB switch */
+                       usb-switch@25 {
+                               compatible = "ti,tsu6111";
+                               reg = <0x25>;
+                               /* Interrupt JACK_INT_N on GPIO95 */
+                               interrupt-parent = <&gpio2>;
+                               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsu6111_codina_default>;
+                       };
+               };
+
+               /* I2C2 on GPIO10 and GPIO11 also called "SENSORS I2C" */
+               i2c@80128000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c2_b_2_default>;
+                       pinctrl-1 = <&i2c2_b_2_sleep>;
+
+                       lisd3dh@19 {
+                               /* ST Microelectronics Accelerometer */
+                               compatible = "st,lis3dh-accel";
+                               st,drdy-int-pin = <1>;
+                               reg = <0x19>;
+                               vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                               vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+                               mount-matrix = "0", "-1", "0",
+                                              "1", "0", "0",
+                                              "0", "0", "1";
+                       };
+               };
+
+               /* I2C3 */
+               i2c@80110000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c3_c_2_default>;
+                       pinctrl-1 = <&i2c3_c_2_sleep>;
+
+                       /* TODO: write bindings and driver for this touchscreen */
+
+                       /* Zinitix BT404 ISP part */
+                       isp@50 {
+                               compatible = "zinitix,bt404-isp";
+                               reg = <0x50>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsp_default>;
+                       };
+
+                       /* Zinitix BT404 touchscreen, also has the touchkeys for menu and back */
+                       touchscreen@20 {
+                               compatible = "zinitix,bt404";
+                               reg = <0x20>;
+                               /* GPIO218 (TSP_INT_1V8) */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                               vcca-supply = <&ldo_tsp_3v3_reg>;
+                               vdd-supply = <&ldo_tsp_1v8_reg>;
+                               zinitix,mode = <2>;
+                               touchscreen-size-x = <480>;
+                               touchscreen-size-y = <800>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsp_default>;
+                       };
+               };
+
+               mcde@a0350000 {
+                       status = "okay";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&dpi_default_mode>;
+
+                       port {
+                               display_out: endpoint {
+                                       remote-endpoint = <&panel_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       /*
+        * This extends the MC0_A_2 default config to include
+        * the card detect GPIO217 line.
+        */
+       sdi0 {
+               mc0_a_2_default {
+                       default_cfg4 {
+                               pins = "GPIO217_AH12"; /* card detect */
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       sdi2 {
+               /*
+                * This will make the resistor mounted in R0.0 pull up
+                * the reset line and take the eMMC out of reset. On
+                * R0.4 variants, GPIO130 should be set in GPIO mode and
+                * pulled down. (Not connected.)
+                */
+               mc2_a_1_default {
+                       default_cfg2 {
+                               pins = "GPIO130_C8"; /* FBCLK */
+                               ste,config = <&in_nopull>;
+                       };
+               };
+       };
+       /* GPIO that enables the 2.9V SD card level translator */
+       sd-level-translator {
+               sd_level_translator_default: sd_level_translator_default {
+                       /* level shifter on GPIO87 */
+                       codina_cfg1 {
+                               pins = "GPIO87_B3";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the eMMC */
+       emmc-ldo {
+               emmc_ldo_en_default_mode: emmc_ldo_default {
+                       /* LDO enable on GPIO223 */
+                       codina_cfg1 {
+                               pins = "GPIO223_AH9";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIOs for panel control */
+       panel {
+               panel_default_mode: panel_default {
+                       codina_cfg1 {
+                               /* Reset line */
+                               pins = "GPIO139_C9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       codina_cfg2 {
+                               /* ESD IRQ line "LCD detect" */
+                               pins = "GPIO93_B7";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the touchscreen */
+       tsp-ldo {
+               tsp_ldo_en_default_mode: tsp_ldo_default {
+                       /* LDO enable on GPIO94 */
+                       gavini_cfg1 {
+                               pins = "GPIO94_D7";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the LCD display */
+       lcd-ldo {
+               lcd_pwr_en_default_mode: lcd_pwr_en_default {
+                       /* LCD_PWR_EN on GPIO219 */
+                       codina_cfg1 {
+                               pins = "GPIO219_AG10";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the key LED */
+       key-led {
+               gpio_leds_default_mode: en_led_ldo_default {
+                       /* EN_LED_LDO on GPIO194 */
+                       codina_cfg1 {
+                               pins = "GPIO194_AF27";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the WLAN internal LDO regulators */
+       wlan-ldo {
+               wlan_ldo_en_default: wlan_ldo_default {
+                       /* GPIO215 named WLAN_RST_N */
+                       codina_cfg1 {
+                               pins = "GPIO215_AH13";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* Backlight GPIO */
+       backlight {
+               ktd253_backlight_default_mode: backlight_default {
+                       skomer_cfg1 {
+                               pins = "GPIO68_E1"; /* LCD_BL_CTRL */
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* Flash and torch */
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       codina_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO keys */
+       gpio-keys {
+               gpio_keys_default_mode: gpio_keys_default {
+                       skomer_cfg1 {
+                               pins = "GPIO67_G2", /* VOL UP */
+                                      "GPIO91_B6", /* HOME */
+                                      "GPIO92_D6"; /* VOL DOWN */
+                               ste,config = <&gpio_in_pu>;
+                       };
+               };
+       };
+       /* Interrupt line for the Zinitix BT404 touchscreen */
+       tsp {
+               tsp_default: tsp_default {
+                       codina_cfg1 {
+                               pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* Interrupt line for light/proximity sensor TMS2672 */
+       tms2672 {
+               tms2672_codina_default: tms2672_codina {
+                       codina_cfg1 {
+                               pins = "GPIO146_D13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for subpmu */
+       i2c-gpio-0 {
+               i2c_gpio_0_default: i2c_gpio_0 {
+                       codina_cfg1 {
+                               pins = "GPIO143_D12", "GPIO144_B13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the NFC */
+       i2c-gpio-1 {
+               i2c_gpio_1_default: i2c_gpio_1 {
+                       codina_cfg1 {
+                               pins = "GPIO151_D17", "GPIO152_D16";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based SPI bus for the display */
+       spi-gpio-0 {
+               spi_gpio_0_default: spi_gpio_0_d {
+                       codina_cfg1 {
+                               pins = "GPIO220_AH10", "GPIO201_AF24", "GPIO224_AG9";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       codina_cfg2 {
+                               pins = "GPIO225_AG8";
+                               /* Needs pull down, no pull down resistor on board */
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+               spi_gpio_0_sleep: spi_gpio_0_s {
+                       codina_cfg1 {
+                               pins = "GPIO220_AH10", "GPIO201_AF24",
+                                      "GPIO224_AG9", "GPIO225_AG8";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       wlan {
+               wlan_default_mode: wlan_default {
+                       /* GPIO216 for WL_HOST_WAKE */
+                       codina_cfg2 {
+                               pins = "GPIO216_AG12";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       bluetooth {
+               bluetooth_default_mode: bluetooth_default {
+                       /* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
+                       codina_cfg1 {
+                               pins = "GPIO199_AH23", "GPIO222_AJ9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       /* GPIO97 BT_HOST_WAKE */
+                       codina_cfg2 {
+                               pins = "GPIO97_D9";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       /* GPIO209 BT_RST_N */
+                       codina_cfg3 {
+                               pins = "GPIO209_AG15";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Interrupt line for TI TSU6111 Micro USB switch */
+       tsu6111 {
+               tsu6111_codina_default: tsu6111_codina {
+                       codina_cfg1 {
+                               /* GPIO95 used for IRQ */
+                               pins = "GPIO95_E8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       vibrator {
+               vibrator_default: vibrator_default {
+                       codina_cfg1 {
+                               pins = "GPIO195_AG28";  /* MOT_EN */
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       mcde {
+               dpi_default_mode: dpi_default {
+                       default_mux1 {
+                               /* Mux in all the data lines */
+                               function = "lcd";
+                               groups =
+                                       /* Data lines D0-D7 GPIO70..GPIO77 */
+                                       "lcd_d0_d7_a_1",
+                                       /* Data lines D8-D11 GPIO78..GPIO81 */
+                                       "lcd_d8_d11_a_1",
+                                       /* Data lines D12-D15 GPIO82..GPIO85 */
+                                       "lcd_d12_d15_a_1",
+                                       /* Data lines D16-D23 GPIO161..GPIO168 */
+                                       "lcd_d16_d23_b_1";
+                       };
+                       default_mux2 {
+                               function = "lcda";
+                               /* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
+                               groups = "lcdaclk_b_1", "lcda_b_1";
+                       };
+                       /* Input, no pull-up is the default state for pins used for an alt function */
+                       default_cfg1 {
+                               pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
+                               ste,config = <&in_nopull>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/ste-ux500-samsung-gavini.dts b/arch/arm/boot/dts/ste-ux500-samsung-gavini.dts
new file mode 100644 (file)
index 0000000..fabc390
--- /dev/null
@@ -0,0 +1,854 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Devicetree for the Samsung Galaxy Beam GT-I8530 also known as Gavini.
+ */
+
+/dts-v1/;
+#include "ste-db8500.dtsi"
+#include "ste-ab8500.dtsi"
+#include "ste-dbx5x0-pinctrl.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy Beam (GT-I8530)";
+       compatible = "samsung,gavini", "st-ericsson,u8500";
+
+       chosen {
+               stdout-path = &serial2;
+       };
+
+       /* TI TXS0206 level translator for 2.9 V */
+       sd_level_translator: regulator-gpio {
+               compatible = "regulator-fixed";
+
+               /* GPIO193 EN */
+               gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               regulator-name = "sd-level-translator";
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-type = "voltage";
+
+               startup-delay-us = <200>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&sd_level_translator_default>;
+       };
+
+       /* External LDO for eMMC LDO VMEM_3V3 controlled by GPIO6 */
+       ldo_3v3_reg: regulator-gpio-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VMEM_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio0 6 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <5000>; // FIXME
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&emmc_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh "TSP" regulator for the touchscreen.
+        * One GPIO line controls two voltages of 3.3V and 1.8V
+        * this line is known as "TSP_LDO_ON1" in the schematics.
+        */
+       ldo_tsp_3v3_reg: regulator-gpio-tsp-ldo-3v3 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "LDO_TSP_A3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+       ldo_tsp_1v8_reg: regulator-gpio-tsp-ldo-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_TSP_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO94 controls this regulator */
+               gpio = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+               /* 70 ms power-on delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tsp_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
+        * LCD_PWR_EN controls both a 3.0V and 1.8V output.
+        */
+       lcd_3v0_reg: regulator-gpio-lcd-3v0 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_3V0";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               /* GPIO219 controls this regulator */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+       lcd_1v8_reg: regulator-gpio-lcd-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO219 controls this regulator too */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+
+       /*
+        * This regulator is a GPIO line that drives the Broadcom WLAN
+        * line WL_REG_ON high and enables the internal regulators
+        * inside the chip. Unfortunatley it is erroneously named
+        * WLAN_RST_N on the schematic but it is not a reset line.
+        *
+        * The voltage specified here is only used to determine the OCR mask,
+        * the for the SDIO connector, the chip is actually connected
+        * directly to VBAT.
+        */
+       wl_reg: regulator-gpio-wlan {
+               compatible = "regulator-fixed";
+               regulator-name = "WL_REG_ON";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               startup-delay-us = <100000>;
+               /* GPIO215 (WLAN_RST_N to WL_REG_ON) */
+               gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_ldo_en_default>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_default_mode>;
+
+               button-projector {
+                       linux,code = <KEY_SWITCHVIDEOMODE>;
+                       label = "Projector";
+                       /* GPIO32 "Projector On HotKey" */
+                       gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+               };
+               button-home {
+                       linux,code = <KEY_HOME>;
+                       label = "HOME";
+                       /* GPIO91 */
+                       gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
+               };
+               button-volup {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "VOL+";
+                       /* GPIO67 */
+                       gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+               };
+               button-voldown {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "VOL-";
+                       /* GPIO92 */
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_leds_default_mode>;
+               used-led {
+                       label = "touchkeys";
+                       /* GPIO68 */
+                       gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       ktd259: backlight {
+               compatible = "kinetic,ktd259";
+               /* GPIO20 */
+               enable-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
+               /* Default to 13/32 brightness */
+               default-brightness = <13>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ktd259_backlight_default_mode>;
+       };
+
+       /* Bit-banged I2C on GPIO143 and GPIO144 also called "SUBPMU I2C" */
+       i2c-gpio-0 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* TODO: Memsic MMC328 magnetometer */
+               magnetometer@30 {
+                       compatible = "memsic,mmc328";
+                       reg = <0x30>;
+                       /* TODO: if you have the schematic, check if both voltages come from AUX2 */
+                       /* VDA 1.8 V */
+                       vda-supply = <&ab8500_ldo_aux2_reg>;
+                       /* VDD 1.8V */
+                       vdd-supply = <&ab8500_ldo_aux2_reg>;
+                       /* GPIO204 */
+                       reset-gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc328_default>;
+               };
+               /* TODO: this should also be used by the NCP6914 Camera power management unit */
+       };
+
+       /*
+        * TODO: See if we can use the PL023 for this instead.
+        */
+       spi-gpio-0 {
+               compatible = "spi-gpio";
+               /* Clock on GPIO220, pin SCL */
+               sck-gpios = <&gpio6 28 GPIO_ACTIVE_HIGH>;
+               /* MOSI on GPIO224, pin SDI "slave data in" */
+               mosi-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
+               /* MISO on GPIO225, pin SDO "slave data out" */
+               miso-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
+               /* Chip select on GPIO223 */
+               cs-gpios = <&gpio6 31 GPIO_ACTIVE_LOW>;
+               num-chipselects = <1>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               panel@0 {
+                       compatible = "samsung,lms397kf04";
+                       /* 300 ns at read cycle -> 3 MHz max speed */
+                       //spi-max-frequency = <3000000>;
+                       spi-max-frequency = <1200000>;
+                       /* TYPE 3: inverse clock polarity and phase */
+                       spi-cpha;
+                       spi-cpol;
+
+                       reg = <0>;
+                       vci-supply = <&lcd_3v0_reg>;
+                       vccio-supply = <&lcd_1v8_reg>;
+                       /* Reset on GPIO139 */
+                       reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&panel_default_mode>;
+                       backlight = <&ktd259>;
+
+                       port {
+                               panel_in: endpoint {
+                                       remote-endpoint = <&display_out>;
+                               };
+                       };
+               };
+       };
+
+       /* Bit-banged I2C on GPIO201 and GPIO202 also called "MOT_I2C" */
+       i2c-gpio-2 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio6 10 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio6 9 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_2_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               /* TODO: add the Immersion ISA1200 I2C device here */
+       };
+
+       /* Bit-banged I2C on GPIO196 and GPIO197 also called "MPR_I2C" */
+       i2c-gpio-3 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio6 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio6 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_3_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               /* TODO: add the DPP2601 projector I2C device 0x1b here */
+       };
+
+       soc {
+               /* External Micro SD slot */
+               mmc@80126000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       st,sig-pin-fbclk;
+                       full-pwr-cycle;
+                       /* MMC is powered by AUX3 1.2V .. 2.91V */
+                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
+                       /* 2.9 V level translator */
+                       vqmmc-supply = <&sd_level_translator>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc0_a_2_default>;
+                       pinctrl-1 = <&mc0_a_2_sleep>;
+                       /* "flash detect" actually card detect */
+                       cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>;
+                       status = "okay";
+               };
+
+               /* WLAN SDIO channel */
+               mmc@80118000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       non-removable;
+                       cap-sd-highspeed;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc1_a_2_default>;
+                       pinctrl-1 = <&mc1_a_2_sleep>;
+                       /*
+                        * GPIO-controlled voltage enablement: this drives
+                        * the WL_REG_ON line high when we use this device.
+                        * Represented as regulator to fill OCR mask.
+                        */
+                       vmmc-supply = <&wl_reg>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "okay";
+
+                       wifi@1 {
+                               compatible = "brcm,bcm4330-fmac", "brcm,bcm4329-fmac";
+                               reg = <1>;
+                               /* GPIO216 WL_HOST_WAKE */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
+                               interrupt-names = "host-wake";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&wlan_default_mode>;
+                       };
+               };
+
+               /* eMMC */
+               mmc@80005000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <8>;
+                       non-removable;
+                       cap-mmc-highspeed;
+                       mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
+                       vmmc-supply = <&ldo_3v3_reg>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc2_a_1_default>;
+                       pinctrl-1 = <&mc2_a_1_sleep>;
+                       status = "okay";
+               };
+
+               /* GBF (Bluetooth) UART */
+               uart@80120000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u0_a_1_default>;
+                       pinctrl-1 = <&u0_a_1_sleep>;
+                       status = "okay";
+
+                       bluetooth {
+                               compatible = "brcm,bcm4330-bt";
+                               /* GPIO222 rail BT_VREG_EN to BT_REG_ON */
+                               shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+                               /* BT_WAKE on GPIO199 */
+                               device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+                               /* BT_HOST_WAKE on GPIO97 */
+                               host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+                               /* BT_RST_N on GPIO209 */
+                               reset-gpios = <&gpio6 17 GPIO_ACTIVE_LOW>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&bluetooth_default_mode>;
+                       };
+               };
+
+               /* GPS UART */
+               uart@80121000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       /* CTS/RTS is not used, CTS is repurposed as GPIO */
+                       pinctrl-0 = <&u1rxtx_a_1_default>;
+                       pinctrl-1 = <&u1rxtx_a_1_sleep>;
+                       /* FIXME: add a device for the GPS here */
+               };
+
+               /* Debugging console UART connected to TSU6111RSVR (FSA880) */
+               uart@80007000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u2rxtx_c_1_default>;
+                       pinctrl-1 = <&u2rxtx_c_1_sleep>;
+               };
+
+               prcmu@80157000 {
+                       ab8500 {
+                               ab8500_usb {
+                                       pinctrl-names = "default", "sleep";
+                                       pinctrl-0 = <&usb_a_1_default>;
+                                       pinctrl-1 = <&usb_a_1_sleep>;
+                               };
+
+                               ab8500-regulators {
+                                       ab8500_ldo_aux1 {
+                                               /* Used for VDD for sensors */
+                                               regulator-name = "V-SENSORS-VDD";
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <3000000>;
+                                       };
+
+                                       ab8500_ldo_aux2 {
+                                               /* Used for VIO for sensors */
+                                               regulator-name = "V-SENSORS-VIO";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ab8500_ldo_aux3 {
+                                               /* Used for voltage for external MMC/SD card */
+                                               regulator-name = "V-MMC-SD";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <2910000>;
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C0 */
+               i2c@80004000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c0_a_1_default>;
+                       pinctrl-1 = <&i2c0_a_1_sleep>;
+
+                       /* FIXME: fix the proximity sensor bindings and driver */
+                       proximity@39 {
+                               /* Gavini has the GP2A030S00F proximity sensor */
+                               compatible = "sharp,gp2a030s00f";
+                               clock-frequency = <400000>;
+                               reg = <0x39>;
+                               /* FIXME: GPIO146 provides power on, IR LED? */
+                       };
+
+                       gyroscope@68 {
+                               compatible = "invensense,mpu3050";
+                               reg = <0x68>;
+                               /* GPIO226 interrupt */
+                               interrupt-parent = <&gpio7>;
+                               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+                               mount-matrix = "0", "1", "0",
+                                              "1", "0", "0",
+                                              "0", "0", "1";
+                               vlogic-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+                               vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&mpu3050_default>;
+
+                               /*
+                                * The MPU-3050 acts as a hub for the
+                                * accelerometer.
+                                */
+                               i2c-gate {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       /* Bosch BMA222E accelerometer */
+                                       accelerometer@18 {
+                                               compatible = "bosch,bma222e";
+                                               reg = <0x18>;
+                                               mount-matrix = "0", "1", "0",
+                                                              "-1", "0", "0",
+                                                              "0", "0", "1";
+                                               vddio-supply = <&ab8500_ldo_aux2_reg>; // 1.8V
+                                               vdd-supply = <&ab8500_ldo_aux1_reg>; // 3V
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C2 "AGC I2C" */
+               i2c@80128000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c2_b_1_default>;
+                       pinctrl-1 = <&i2c2_b_1_sleep>;
+
+                       /* Texas Instruments TSU6111 micro USB switch */
+                       usb-switch@25 {
+                               compatible = "ti,tsu6111";
+                               reg = <0x25>;
+                               /* Interrupt JACK_INT_N on GPIO95 */
+                               interrupt-parent = <&gpio2>;
+                               interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsu6111_default>;
+                       };
+               };
+
+               /* I2C3 */
+               i2c@80110000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c3_c_2_default>;
+                       pinctrl-1 = <&i2c3_c_2_sleep>;
+
+                       /* Melfas MMS136 touchscreen */
+                       touchscreen@48 {
+                               compatible = "melfas,mms136";
+                               reg = <0x48>;
+                               /* GPIO218 (TSP_INT_1V8) */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                               /* AVDD is "analog supply", 2.57-3.47 V */
+                               avdd-supply = <&ldo_tsp_3v3_reg>;
+                               /* VDD is "digital supply" 1.71-3.47V */
+                               vdd-supply = <&ldo_tsp_1v8_reg>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&tsp_default>;
+                               touchscreen-size-x = <480>;
+                               touchscreen-size-y = <800>;
+                       };
+               };
+
+               mcde@a0350000 {
+                       status = "okay";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&dpi_default_mode>;
+
+                       port {
+                               display_out: endpoint {
+                                       remote-endpoint = <&panel_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       /*
+        * This extends the MC0_A_2 default config to include
+        * the card detect GPIO217 line.
+        */
+       sdi0 {
+               mc0_a_2_default {
+                       default_cfg4 {
+                               pins = "GPIO217_AH12"; /* card detect */
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       mcde {
+               dpi_default_mode: dpi_default {
+                       default_mux1 {
+                               /* Mux in all the data lines */
+                               function = "lcd";
+                               groups =
+                                       /* Data lines D0-D7 GPIO70..GPIO77 */
+                                       "lcd_d0_d7_a_1",
+                                       /* Data lines D8-D11 GPIO78..GPIO81 */
+                                       "lcd_d8_d11_a_1",
+                                       /* Data lines D12-D15 GPIO82..GPIO85 */
+                                       "lcd_d12_d15_a_1",
+                                       /* Data lines D16-D23 GPIO161..GPIO168 */
+                                       "lcd_d16_d23_b_1";
+                       };
+                       default_mux2 {
+                               function = "lcda";
+                               /* Clock line on GPIO150, DE, VSO, HSO on GPIO169..GPIO171 */
+                               groups = "lcdaclk_b_1", "lcda_b_1";
+                       };
+                       /* Input, no pull-up is the default state for pins used for an alt function */
+                       default_cfg1 {
+                               pins = "GPIO150_C14", "GPIO169_D22", "GPIO170_C23", "GPIO171_D23";
+                               ste,config = <&in_nopull>;
+                       };
+               };
+       };
+       /* GPIO for panel reset control */
+       panel {
+               panel_default_mode: panel_default {
+                       gavini_cfg1 {
+                               /* Reset line */
+                               pins = "GPIO139_C9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the eMMC */
+       emmc-ldo {
+               emmc_ldo_en_default_mode: emmc_ldo_default {
+                       /* LDO enable on GPIO6 */
+                       gavini_cfg1 {
+                               pins = "GPIO6_AF6";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the touchscreen */
+       tsp-ldo {
+               tsp_ldo_en_default_mode: tsp_ldo_default {
+                       /* LDO enable on GPIO94 */
+                       gavini_cfg1 {
+                               pins = "GPIO94_D7";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Flash and torch */
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       janice_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the key LED */
+       gpio-leds {
+               gpio_leds_default_mode: gpio_leds_default {
+                       /* EN_LED_LDO on GPIO68 */
+                       gavini_cfg1 {
+                               pins = "GPIO68_E1";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       backlight {
+               ktd259_backlight_default_mode: backlight_default {
+                       skomer_cfg1 {
+                               pins = "GPIO20_AB4"; /* LCD_BL_EN */
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the touchkeys */
+       touchkey-ldo {
+               tsp_ldo_on2_default_mode: tsp_ldo_on2_default {
+                       /* TSP_LDO_ON2 on GPIO89 */
+                       gavini_cfg1 {
+                               pins = "GPIO89_E6";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       touchkey {
+               touchkey_default_mode: touchkey_default {
+                       gavini_cfg1 {
+                               /* Interrupt */
+                               pins = "GPIO198_AG25";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       gavini_cfg2 {
+                               /* Reset, actually completely unused (not routed) */
+                               pins = "GPIO205_AG23";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the LCD display */
+       lcd-ldo {
+               lcd_pwr_en_default_mode: lcd_pwr_en_default {
+                       /* LCD_PWR_EN on GPIO219 */
+                       gavini_cfg1 {
+                               pins = "GPIO219_AG10";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the WLAN internal LDO regulators */
+       wlan-ldo {
+               wlan_ldo_en_default: wlan_ldo_default {
+                       /* GPIO215 named WLAN_RST_N */
+                       gavini_cfg1 {
+                               pins = "GPIO215_AH13";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the 2.9V SD card level translator */
+       sd-level-translator {
+               sd_level_translator_default: sd_level_translator_default {
+                       /* level shifter on GPIO193 */
+                       skomer_cfg1 {
+                               pins = "GPIO193_AH27";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO keys */
+       gpio-keys {
+               gpio_keys_default_mode: gpio_keys_default {
+                       skomer_cfg1 {
+                               pins = "GPIO32_V2", /* Projector On HotKey */
+                                      "GPIO67_G2", /* VOL UP */
+                                      "GPIO91_B6", /* HOME */
+                                      "GPIO92_D6"; /* VOL DOWN */
+                               ste,config = <&gpio_in_pu>;
+                       };
+               };
+       };
+       /* Interrupt line for the Atmel MXT228 touchscreen */
+       tsp {
+               tsp_default: tsp_default {
+                       gavini_cfg1 {
+                               pins = "GPIO218_AH11";  /* TSP_INT_1V8 */
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* Reset line for the Memsic MMC328 magnetometer */
+       mmc328 {
+               mmc328_default: mmc328_gavini {
+                       gavini_cfg1 {
+                               pins = "GPIO204_AF23";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Interrupt line for Invensense MPU3050 gyroscope */
+       mpu3050 {
+               mpu3050_default: mpu3050 {
+                       gavini_cfg1 {
+                               /* GPIO226 used for IRQ */
+                               pins = "GPIO226_AF8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for magnetometer and NCP6914 */
+       i2c-gpio-0 {
+               i2c_gpio_0_default: i2c_gpio_0 {
+                       gavini_cfg1 {
+                               pins = "GPIO143_D12", "GPIO144_B13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the Immersion ISA1200 */
+       i2c-gpio-2 {
+               i2c_gpio_2_default: i2c_gpio_2 {
+                       gavini_cfg1 {
+                               pins = "GPIO201_AF24", "GPIO202_AF25";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for the TI DPP2601 */
+       i2c-gpio-3 {
+               i2c_gpio_3_default: i2c_gpio_3 {
+                       gavini_cfg1 {
+                               pins = "GPIO196_AG26", "GPIO197_AH24";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based SPI bus for the display */
+       spi-gpio-0 {
+               spi_gpio_0_default: spi_gpio_0_d {
+                       gavini_cfg1 {
+                               pins = "GPIO220_AH10", "GPIO223_AH9", "GPIO224_AG9";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       gavini_cfg2 {
+                               pins = "GPIO225_AG8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+               spi_gpio_0_sleep: spi_gpio_0_s {
+                       gavini_cfg1 {
+                               pins = "GPIO220_AH10", "GPIO223_AH9",
+                                    "GPIO224_AG9", "GPIO225_AG8";
+                               ste,config = <&gpio_out_hi>;
+                       };
+                       gavini_cfg2 {
+                               pins = "GPIO225_AG8";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       wlan {
+               wlan_default_mode: wlan_default {
+                       /* GPIO216 for WL_HOST_WAKE */
+                       gavini_cfg2 {
+                               pins = "GPIO216_AG12";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+       bluetooth {
+               bluetooth_default_mode: bluetooth_default {
+                       /* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
+                       gavini_cfg1 {
+                               pins = "GPIO199_AH23", "GPIO222_AJ9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       /* GPIO97 BT_HOST_WAKE */
+                       gavini_cfg2 {
+                               pins = "GPIO97_D9";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       /* GPIO209 BT_RST_N */
+                       gavini_cfg3 {
+                               pins = "GPIO209_AG15";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* Interrupt line for TI TSU6111 Micro USB switch */
+       tsu6111 {
+               tsu6111_default: tsu6111 {
+                       gavini_cfg1 {
+                               /* GPIO95 used for IRQ */
+                               pins = "GPIO95_E8";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+};
index 40df7c6..ee6379a 100644 (file)
                        non-removable;
                        cap-mmc-highspeed;
                        mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
 
                        vmmc-supply = <&vmem_3v3>;
 
index 25af066..f14cf31 100644 (file)
                        non-removable;
                        cap-mmc-highspeed;
                        mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
                        vmmc-supply = <&ldo_3v3_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc2_a_1_default>;
                                        #size-cells = <0>;
 
                                        /* Bosch BMA222 accelerometer */
-                                       accelerometer@08 {
+                                       accelerometer@8 {
                                                compatible = "bosch,bma222";
                                                reg = <0x08>;
                                                mount-matrix = "0", "1", "0",
diff --git a/arch/arm/boot/dts/ste-ux500-samsung-kyle.dts b/arch/arm/boot/dts/ste-ux500-samsung-kyle.dts
new file mode 100644 (file)
index 0000000..3b82566
--- /dev/null
@@ -0,0 +1,664 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Devicetree for the Samsung Galaxy Amp SGH-I407 also known as Kyle.
+ *
+ * The code also refers to "Kyle AT&T" reflecting that this mobile phone
+ * was customized for the AT&T subsidiary Aio Wireless (All In One) and
+ * offered by the company in 2013.
+ */
+
+/dts-v1/;
+#include "ste-db8500.dtsi"
+#include "ste-ab8505.dtsi"
+#include "ste-dbx5x0-pinctrl.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy Amp (SGH-I407)";
+       compatible = "samsung,kyle", "st-ericsson,u8500";
+
+       chosen {
+               stdout-path = &serial2;
+       };
+
+       /* TI TXS0206 level translator for 2.9 V */
+       sd_level_translator: regulator-gpio {
+               compatible = "regulator-fixed";
+
+               /* GPIO87 EN */
+               gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               regulator-name = "sd-level-translator";
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
+               regulator-type = "voltage";
+
+               startup-delay-us = <200>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&sd_level_translator_default>;
+       };
+
+       /* External LDO MIC5366-3.3YMT for eMMC */
+       ldo_3v3_reg: regulator-gpio-ldo-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "en-3v3-fixed-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <5000>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&emmc_ldo_en_default_mode>;
+       };
+
+       /*
+        * External Ricoh RP152L010B-TR LCD LDO regulator for the display.
+        * LCD_PWR_EN controls both a 3.0V and 1.8V output.
+        */
+       lcd_3v0_reg: regulator-gpio-lcd-3v0 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_3V0";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               /* GPIO219 controls this regulator */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+       lcd_1v8_reg: regulator-gpio-lcd-1v8 {
+               compatible = "regulator-fixed";
+               /* Supplied in turn by VBAT */
+               regulator-name = "VREG_LCD_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               /* GPIO219 controls this regulator too */
+               gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pwr_en_default_mode>;
+       };
+
+       wlan_en: regulator-gpio-wlan-en {
+               compatible = "regulator-fixed";
+               regulator-name = "wl-reg-on";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               startup-delay-us = <200000>;
+               /* GPIO215 WLAN_EN */
+               gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wlan_en_default_mode>;
+       };
+
+       vibrator {
+               compatible = "gpio-vibrator";
+               enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vibrator_default>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys_default_mode>;
+
+               button-home {
+                       linux,code = <KEY_HOME>;
+                       label = "HOME";
+                       /* GPIO91 */
+                       gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
+               };
+               button-volup {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "VOL+";
+                       /* GPIO67 */
+                       gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
+               };
+               button-voldown {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "VOL-";
+                       /* GPIO92 */
+                       gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       ktd253: backlight {
+               compatible = "kinetic,ktd253";
+               /* GPIO 69 */
+               enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
+               /* Default to 13/32 brightness */
+               default-brightness = <13>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_backlight_default_mode>;
+       };
+
+       /* Richtek RT8515GQW Flash LED Driver IC */
+       flash {
+               compatible = "richtek,rt8515";
+               /* GPIO 140 */
+               enf-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
+               /* GPIO 141 */
+               ent-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
+               /*
+                * RFS is 16 kOhm and RTS is 100 kOhm giving
+                * the flash max current 343mA and torch max
+                * current 55 mA.
+                */
+               richtek,rfs-ohms = <16000>;
+               richtek,rts-ohms = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_flash_default_mode>;
+
+               led {
+                       function = LED_FUNCTION_FLASH;
+                       color = <LED_COLOR_ID_WHITE>;
+                       flash-max-timeout-us = <250000>;
+                       flash-max-microamp = <343750>;
+                       led-max-microamp = <55000>;
+               };
+       };
+
+       i2c-gpio-0 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_0_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               /* TODO: this should be used by the NCP6914 Camera power management unit */
+       };
+
+       i2c-gpio-1 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c_gpio_1_default>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               magnetometer@c {
+                       compatible = "alps,hscdtd008a";
+                       reg = <0x0c>;
+                       avdd-supply = <&ab8500_ldo_aux1_reg>;
+                       dvdd-supply = <&ab8500_ldo_aux6_reg>;
+               };
+       };
+
+       soc {
+               // External Micro SD slot
+               mmc@80126000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <4>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       st,sig-pin-fbclk;
+                       full-pwr-cycle;
+                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
+                       vqmmc-supply = <&sd_level_translator>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc0_a_1_default>;
+                       pinctrl-1 = <&mc0_a_1_sleep>;
+                       cd-gpios  = <&gpio6 25 GPIO_ACTIVE_LOW>; // GPIO217
+                       status = "okay";
+               };
+
+               // WLAN SDIO channel
+               mmc@80118000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <50000000>;
+                       bus-width = <4>;
+                       non-removable;
+                       cap-sd-highspeed;
+                       vmmc-supply = <&wlan_en>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc1_a_2_default>;
+                       pinctrl-1 = <&mc1_a_2_sleep>;
+                       status = "okay";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       wifi@1 {
+                               compatible = "brcm,bcm4334-fmac", "brcm,bcm4329-fmac";
+                               reg = <1>;
+                               /* GPIO216 WL_HOST_WAKE */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
+                               interrupt-names = "host-wake";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&wlan_default_mode>;
+                       };
+               };
+
+               /*
+                * eMMC seems to be mostly Samsung KLM4G1YE4C "4YMD1R"
+                */
+               mmc@80005000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <8>;
+                       non-removable;
+                       cap-mmc-highspeed;
+                       mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
+                       /* From datasheet page 26 figure 9: 300 ms set-up time for 4GB */
+                       post-power-on-delay-ms = <300>;
+                       vmmc-supply = <&ldo_3v3_reg>;
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&mc2_a_1_default>;
+                       pinctrl-1 = <&mc2_a_1_sleep>;
+
+                       status = "okay";
+               };
+
+               /* GBF (Bluetooth) UART */
+               uart@80120000 {
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u0_a_1_default>;
+                       pinctrl-1 = <&u0_a_1_sleep>;
+                       status = "okay";
+
+                       bluetooth {
+                               /* BCM4334B0 actually */
+                               compatible = "brcm,bcm4330-bt";
+                               shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+                               device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
+                               host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&bluetooth_default_mode>;
+                       };
+               };
+
+               /* GPF UART */
+               uart@80121000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
+                       pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
+               };
+
+               /* Debugging console UART connected to AB8505 USB */
+               uart@80007000 {
+                       status = "okay";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&u2rxtx_c_1_default>;
+                       pinctrl-1 = <&u2rxtx_c_1_sleep>;
+               };
+
+               prcmu@80157000 {
+                       ab8505 {
+                               ab8500_usb {
+                                       pinctrl-names = "default", "sleep";
+                                       pinctrl-0 = <&usb_a_1_default>;
+                                       pinctrl-1 = <&usb_a_1_sleep>;
+                               };
+
+                               ab8505-regulators {
+                                       ab8500_ldo_aux1 {
+                                               /* Used for VDD for sensors */
+                                               regulator-name = "AUX1";
+                                               regulator-min-microvolt = <3000000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ab8500_ldo_aux2 {
+                                               /* Supplies the MMS touchscreen only with 3.3V */
+                                               regulator-name = "AUX2";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ab8500_ldo_aux3 {
+                                               /* Used for voltage for external MMC/SD card */
+                                               regulator-name = "AUX3";
+                                               regulator-min-microvolt = <1100000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ab8500_ldo_aux4 {
+                                               regulator-name = "AUX4";
+                                               /* Hammer to 3.3V for the touchscreen */
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ab8500_ldo_aux5 {
+                                               regulator-name = "AUX5";
+                                               /* 1.8V for the touchscreen */
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ab8500_ldo_aux6 {
+                                               regulator-name = "AUX6";
+                                               /* Used by sensors for 1.8 V in R0.1+ */
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ab8500_ldo_aux8 {
+                                               /* Unused */
+                                               regulator-name = "AUX8";
+                                       };
+                               };
+                       };
+               };
+
+               /* I2C0 */
+               i2c@80004000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c0_a_1_default>;
+                       pinctrl-1 = <&i2c0_a_1_sleep>;
+
+                       proximity@44 {
+                               compatible = "sharp,gp2ap002s00f";
+                               clock-frequency = <400000>;
+                               reg = <0x44>;
+
+                               interrupt-parent = <&gpio4>;
+                               interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
+                               vdd-supply = <&ab8500_ldo_aux1_reg>;
+                               vio-supply = <&ab8500_ldo_aux6_reg>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&gp2ap002_kyle_default>;
+                               sharp,proximity-far-hysteresis = /bits/ 8 <0x2f>;
+                               sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
+                       };
+               };
+
+               /* I2C2 */
+               i2c@80128000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c2_b_2_default>;
+                       pinctrl-1 = <&i2c2_b_2_sleep>;
+
+                       accel@18 {
+                               compatible = "bosch,bma254";
+                               clock-frequency = <400000>;
+                               reg = <0x18>;
+
+                               mount-matrix = "-1", "0", "0",
+                                              "0", "-1", "0",
+                                              "0", "0", "-1";
+                               vdd-supply = <&ab8500_ldo_aux1_reg>;
+                               vddio-supply = <&ab8500_ldo_aux6_reg>;
+                       };
+               };
+
+               /* I2C3 */
+               i2c@80110000 {
+                       status = "okay";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c3_c_2_default>;
+                       pinctrl-1 = <&i2c3_c_2_sleep>;
+
+                       /* Melfas MMS134S touchscreen */
+                       touchscreen@48 {
+                               compatible = "melfas,mms134s";
+                               reg = <0x48>;
+                               /* GPIO218 for IRQ */
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                               /* AVDD is "analog supply", 2.57-3.47 V */
+                               avdd-supply = <&ab8500_ldo_aux2_reg>;
+                               /* VDD is "digital supply" 1.71-3.47V */
+                               vdd-supply = <&ab8500_ldo_aux5_reg>;
+
+                               touchscreen-size-x = <480>;
+                               touchscreen-size-y = <800>;
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&mms134s_kyle_default>;
+                       };
+               };
+
+               mcde@a0350000 {
+                       status = "okay";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&dsi_default_mode>;
+
+                       dsi@a0351000 {
+                               panel {
+                                       /*
+                                        * NT35510-based Hydis HVA40WV1
+                                        * Apparently some Kyle models can have a NT35512 fitted
+                                        * here instead. In that case the boot loader needs to
+                                        * modify this compatible.
+                                        */
+                                       compatible = "hydis,hva40wv1", "novatek,nt35510";
+                                       reg = <0>;
+                                       /* v_lcd_3v0 2.3-4.8V */
+                                       vdd-supply = <&lcd_3v0_reg>;
+                                       /* v_lcd_1v8 1.65-3.3V */
+                                       vddi-supply = <&lcd_1v8_reg>;
+                                       /* GPIO 139 */
+                                       reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&display_default_mode>;
+                                       backlight = <&ktd253>;
+                               };
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       /*
+        * This extends the MC0_A_1 default config to include
+        * the card detect GPIO217 line.
+        */
+       sdi0 {
+               mc0_a_1_default {
+                       default_cfg1 {
+                               /* GPIO18, 19 & 20 unused so pull down */
+                               ste,config = <&gpio_in_pd>;
+                       };
+                       default_cfg4 {
+                               pins = "GPIO217_AH12"; /* card detect */
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+       };
+
+       mcde {
+               dsi_default_mode: dsi_default {
+                       default_mux1 {
+                               /* Mux in VSI0 used for DSI TE */
+                               function = "lcd";
+                               groups = "lcdvsi0_a_1"; /* VSI0 for LCD */
+                       };
+                       default_cfg1 {
+                               pins = "GPIO68_E1"; /* VSI0 */
+                               ste,config = <&in_nopull>;
+                       };
+               };
+       };
+
+       /* Two GPIO lines used by the display */
+       display {
+               display_default_mode: display_default {
+                       kyle_cfg1 {
+                               /*
+                                * OLED DETECT or check_pba, this appears to be high
+                                * on "PBA" which I guess is "prototype board A".
+                                */
+                               pins = "GPIO93_B7";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+                       kyle_cfg2 {
+                               pins = "GPIO139_C9";
+                               /*
+                                * MIPI_DSI0_RESET_N resets the display, leave high
+                                * (de-asserted) so we only assert reset explicitly
+                                * from the display driver.
+                                */
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+
+       /* GPIO that enables the LDO regulator for the LCD display */
+       lcd-ldo {
+               lcd_pwr_en_default_mode: lcd_pwr_en_default {
+                       /* LCD_PWR_EN on GPIO219 */
+                       kyle_cfg1 {
+                               pins = "GPIO219_AG10";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+
+       backlight {
+               gpio_backlight_default_mode: backlight_default {
+                       kyle_cfg1 {
+                               pins = "GPIO69_E2"; /* LCD_BL_CTRL */
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       flash {
+               gpio_flash_default_mode: flash_default {
+                       kyle_cfg1 {
+                               pins = "GPIO140_B11", "GPIO141_C12";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* GPIO that enables the 2.9V SD card level translator */
+       sd-level-translator {
+               sd_level_translator_default: sd_level_translator_default {
+                       /* level shifter on GPIO87 */
+                       kyle_cfg1 {
+                               pins = "GPIO87_B3";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO that enables the LDO regulator for the eMMC */
+       emmc-ldo {
+               emmc_ldo_en_default_mode: emmc_ldo_default {
+                       /* LDO enable on GPIO223 */
+                       kyle_cfg1 {
+                               pins = "GPIO223_AH9";
+                               ste,config = <&gpio_out_hi>;
+                       };
+               };
+       };
+       /* GPIO keys */
+       gpio-keys {
+               gpio_keys_default_mode: gpio_keys_default {
+                       kyle_cfg1 {
+                               pins = "GPIO67_G2", /* VOL UP */
+                                      "GPIO91_B6", /* HOME */
+                                      "GPIO92_D6"; /* VOL DOWN */
+                                       ste,config = <&gpio_in_pu>;
+                       };
+               };
+       };
+       /* Interrupt line for light/proximity sensor GP2AP002 */
+       gp2ap002 {
+               gp2ap002_kyle_default: gp2ap002_kyle {
+                       kyle_cfg1 {
+                               pins = "GPIO146_D13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for NCP6914 */
+       i2c-gpio-0 {
+               i2c_gpio_0_default: i2c_gpio_0 {
+                       kyle_cfg1 {
+                               pins = "GPIO143_D12", "GPIO144_B13";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       /* GPIO-based I2C bus for ALPS HSCD compass */
+       i2c-gpio-1 {
+               i2c_gpio_1_default: i2c_gpio_1 {
+                       kyle_cfg1 {
+                               pins = "GPIO151_B17", "GPIO152_D16";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       wlan {
+               wlan_default_mode: wlan_default {
+                       kyle_cfg1 {
+                               pins = "GPIO216_AG12";
+                               ste,config = <&gpio_in_pd>;
+                       };
+               };
+               wlan_en_default_mode: wlan_en_default {
+                       kyle_cfg2 {
+                               pins = "GPIO215_AH13";
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       bluetooth {
+               bluetooth_default_mode: bluetooth_default {
+                       kyle_cfg1 {
+                               pins = "GPIO199_AH23", "GPIO222_AJ9";
+                               ste,config = <&gpio_out_lo>;
+                       };
+                       kyle_cfg2 {
+                               pins = "GPIO97_D9";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+       vibrator {
+               vibrator_default: vibrator_default {
+                       kyle_cfg1 {
+                               pins = "GPIO195_AG28";  /* MOT_EN */
+                               ste,config = <&gpio_out_lo>;
+                       };
+               };
+       };
+       /* Interrupt line for the Melfas MMS134S touchscreen */
+       touchscreen {
+               mms134s_kyle_default: mms134s_kyle {
+                       kyle_cfg1 {
+                               pins = "GPIO218_AH11";
+                               ste,config = <&gpio_in_nopull>;
+                       };
+               };
+       };
+};
+
+&ab8505_gpio {
+       /* Hog a few default settings */
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio_default>;
+
+       gpio {
+               gpio_default: gpio_default {
+                       kyle_mux {
+                               /* Change unused pins to GPIO mode */
+                               function = "gpio";
+                               groups = "gpio3_a_1",   /* default: SysClkReq4 */
+                                        "gpio14_a_1";  /* default: PWMOut1 */
+                       };
+                       kyle_cfg1 {
+                               pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
+                               bias-disable;
+                       };
+               };
+       };
+};
index 94afd7a..264f3e9 100644 (file)
                        non-removable;
                        cap-mmc-highspeed;
                        mmc-ddr-1_8v;
+                       no-sdio;
+                       no-sd;
                        vmmc-supply = <&ldo_3v3_reg>;
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&mc2_a_1_default>;
index 31c85f9..9c79982 100644 (file)
@@ -11,7 +11,6 @@
        compatible = "st,stih407-b2120", "st,stih407";
 
        chosen {
-               bootargs = "clk_ignore_unused";
                stdout-path = &sbc_serial0;
        };
 
index 1ab40db..9cce954 100644 (file)
@@ -36,8 +36,6 @@
                                compatible = "st,stih407-clkgen-plla9";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clockgen-a9-pll-odf";
                        };
                };
 
 
                        clk_s_a0_pll: clk-s-a0-pll {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-a0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-a0-pll-ofd-0";
-                               clock-critical = <0>; /* clk-s-a0-pll-ofd-0 */
                        };
 
                        clk_s_a0_flexgen: clk-s-a0-flexgen {
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-a0";
 
                                #clock-cells = <1>;
 
                                clocks = <&clk_s_a0_pll 0>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-ic-lmi0";
-                               clock-critical = <CLK_IC_LMI0>;
                        };
                };
 
                        reg = <0x9103000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-c0-fs0-ch0",
-                                            "clk-s-c0-fs0-ch1",
-                                            "clk-s-c0-fs0-ch2",
-                                            "clk-s-c0-fs0-ch3";
-                       clock-critical = <0>; /* clk-s-c0-fs0-ch0 */
                };
 
                clk_s_c0: clockgen-c@9103000 {
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll0-odf-0";
-                               clock-critical = <0>; /* clk-s-c0-pll0-odf-0 */
                        };
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll1";
+                               compatible = "st,clkgen-pll1-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll1-odf-0";
                        };
 
                        clk_s_c0_flexgen: clk-s-c0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-c0";
 
                                clocks = <&clk_s_c0_pll0 0>,
                                         <&clk_s_c0_pll1 0>,
                                         <&clk_s_c0_quadfs 3>,
                                         <&clk_sysin>;
 
-                               clock-output-names = "clk-icn-gpu",
-                                                    "clk-fdma",
-                                                    "clk-nand",
-                                                    "clk-hva",
-                                                    "clk-proc-stfe",
-                                                    "clk-proc-tp",
-                                                    "clk-rx-icn-dmu",
-                                                    "clk-rx-icn-hva",
-                                                    "clk-icn-cpu",
-                                                    "clk-tx-icn-dmu",
-                                                    "clk-mmc-0",
-                                                    "clk-mmc-1",
-                                                    "clk-jpegdec",
-                                                    "clk-ext2fa9",
-                                                    "clk-ic-bdisp-0",
-                                                    "clk-ic-bdisp-1",
-                                                    "clk-pp-dmu",
-                                                    "clk-vid-dmu",
-                                                    "clk-dss-lpc",
-                                                    "clk-st231-aud-0",
-                                                    "clk-st231-gp-1",
-                                                    "clk-st231-dmu",
-                                                    "clk-icn-lmi",
-                                                    "clk-tx-icn-disp-1",
-                                                    "clk-icn-sbc",
-                                                    "clk-stfe-frc2",
-                                                    "clk-eth-phy",
-                                                    "clk-eth-ref-phyclk",
-                                                    "clk-flash-promip",
-                                                    "clk-main-disp",
-                                                    "clk-aux-disp",
-                                                    "clk-compo-dvp";
-                               clock-critical = <CLK_PROC_STFE>,
-                                                <CLK_ICN_CPU>,
-                                                <CLK_TX_ICN_DMU>,
-                                                <CLK_EXT2F_A9>,
-                                                <CLK_ICN_LMI>,
-                                                <CLK_ICN_SBC>;
-
                                /*
                                 * ARM Peripheral clock for timers
                                 */
 
                clk_s_d0_quadfs: clk-s-d0-quadfs@9104000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d0";
                        reg = <0x9104000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d0-fs0-ch0",
-                                            "clk-s-d0-fs0-ch1",
-                                            "clk-s-d0-fs0-ch2",
-                                            "clk-s-d0-fs0-ch3";
                };
 
                clockgen-d0@9104000 {
 
                        clk_s_d0_flexgen: clk-s-d0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-audio", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d0";
 
                                clocks = <&clk_s_d0_quadfs 0>,
                                         <&clk_s_d0_quadfs 1>,
                                         <&clk_s_d0_quadfs 2>,
                                         <&clk_s_d0_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-pcm-0",
-                                                    "clk-pcm-1",
-                                                    "clk-pcm-2",
-                                                    "clk-spdiff";
                        };
                };
 
                clk_s_d2_quadfs: clk-s-d2-quadfs@9106000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d2";
                        reg = <0x9106000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d2-fs0-ch0",
-                                            "clk-s-d2-fs0-ch1",
-                                            "clk-s-d2-fs0-ch2",
-                                            "clk-s-d2-fs0-ch3";
                };
 
                clockgen-d2@9106000 {
 
                        clk_s_d2_flexgen: clk-s-d2-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-video", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d2";
 
                                clocks = <&clk_s_d2_quadfs 0>,
                                         <&clk_s_d2_quadfs 1>,
                                         <&clk_sysin>,
                                         <&clk_sysin>,
                                         <&clk_tmdsout_hdmi>;
-
-                               clock-output-names = "clk-pix-main-disp",
-                                                    "clk-pix-pip",
-                                                    "clk-pix-gdp1",
-                                                    "clk-pix-gdp2",
-                                                    "clk-pix-gdp3",
-                                                    "clk-pix-gdp4",
-                                                    "clk-pix-aux-disp",
-                                                    "clk-denc",
-                                                    "clk-pix-hddac",
-                                                    "clk-hddac",
-                                                    "clk-sddac",
-                                                    "clk-pix-dvo",
-                                                    "clk-dvo",
-                                                    "clk-pix-hdmi",
-                                                    "clk-tmds-hdmi",
-                                                    "clk-ref-hdmiphy";
-                                                    };
+                       };
                };
 
                clk_s_d3_quadfs: clk-s-d3-quadfs@9107000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d3";
                        reg = <0x9107000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d3-fs0-ch0",
-                                            "clk-s-d3-fs0-ch1",
-                                            "clk-s-d3-fs0-ch2",
-                                            "clk-s-d3-fs0-ch3";
                };
 
                clockgen-d3@9107000 {
 
                        clk_s_d3_flexgen: clk-s-d3-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d3";
 
                                clocks = <&clk_s_d3_quadfs 0>,
                                         <&clk_s_d3_quadfs 1>,
                                         <&clk_s_d3_quadfs 2>,
                                         <&clk_s_d3_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-stfe-frc1",
-                                                    "clk-tsout-0",
-                                                    "clk-tsout-1",
-                                                    "clk-mchi",
-                                                    "clk-vsens-compo",
-                                                    "clk-frc1-remote",
-                                                    "clk-lpc-0",
-                                                    "clk-lpc-1";
                        };
                };
        };
index 23a1746..21f3347 100644 (file)
                        st,lpc-mode = <ST_LPC_MODE_CLKSRC>;
                };
 
+               spifsm: spifsm@9022000{
+                       compatible = "st,spi-fsm";
+                       reg = <0x9022000 0x1000>;
+                       reg-names = "spi-fsm";
+                       clocks = <&clk_s_c0_flexgen CLK_FLASH_PROMIP>;
+                       clock-names = "emi_clk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_fsm>;
+                       st,syscfg = <&syscfg_core>;
+                       st,boot-device-reg = <0x8c4>;
+                       st,boot-device-spi = <0x68>;
+
+                       status = "disabled";
+               };
+
                sata0: sata@9b20000 {
                        compatible = "st,ahci";
                        reg = <0x9b20000 0x1000>;
index 158b226..9d3b118 100644 (file)
@@ -11,7 +11,6 @@
        compatible = "st,stih410-b2120", "st,stih410";
 
        chosen {
-               bootargs = "clk_ignore_unused";
                stdout-path = &sbc_serial0;
        };
 
index e2bb597..9d579c1 100644 (file)
@@ -12,7 +12,6 @@
        compatible = "st,stih410-b2260", "st,stih410";
 
        chosen {
-               bootargs = "clk_ignore_unused";
                stdout-path = &uart1;
        };
 
index 81a8c25..6b0e6d4 100644 (file)
@@ -39,8 +39,6 @@
                                compatible = "st,stih407-clkgen-plla9";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clockgen-a9-pll-odf";
                        };
                };
 
 
                        clk_s_a0_pll: clk-s-a0-pll {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-a0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-a0-pll-ofd-0";
-                               clock-critical = <0>; /* clk-s-a0-pll-ofd-0 */
                        };
 
                        clk_s_a0_flexgen: clk-s-a0-flexgen {
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih410-a0";
 
                                #clock-cells = <1>;
 
                                clocks = <&clk_s_a0_pll 0>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-ic-lmi0",
-                                                    "clk-ic-lmi1";
-                               clock-critical = <CLK_IC_LMI0>;
                        };
                };
 
                        reg = <0x9103000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-c0-fs0-ch0",
-                                            "clk-s-c0-fs0-ch1",
-                                            "clk-s-c0-fs0-ch2",
-                                            "clk-s-c0-fs0-ch3";
-                       clock-critical = <0>; /* clk-s-c0-fs0-ch0 */
                };
 
                clk_s_c0: clockgen-c@9103000 {
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll0-odf-0";
-                               clock-critical = <0>; /* clk-s-c0-pll0-odf-0 */
                        };
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll1";
+                               compatible = "st,clkgen-pll1-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll1-odf-0";
                        };
 
                        clk_s_c0_flexgen: clk-s-c0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih410-c0";
 
                                clocks = <&clk_s_c0_pll0 0>,
                                         <&clk_s_c0_pll1 0>,
                                         <&clk_s_c0_quadfs 3>,
                                         <&clk_sysin>;
 
-                               clock-output-names = "clk-icn-gpu",
-                                                    "clk-fdma",
-                                                    "clk-nand",
-                                                    "clk-hva",
-                                                    "clk-proc-stfe",
-                                                    "clk-proc-tp",
-                                                    "clk-rx-icn-dmu",
-                                                    "clk-rx-icn-hva",
-                                                    "clk-icn-cpu",
-                                                    "clk-tx-icn-dmu",
-                                                    "clk-mmc-0",
-                                                    "clk-mmc-1",
-                                                    "clk-jpegdec",
-                                                    "clk-ext2fa9",
-                                                    "clk-ic-bdisp-0",
-                                                    "clk-ic-bdisp-1",
-                                                    "clk-pp-dmu",
-                                                    "clk-vid-dmu",
-                                                    "clk-dss-lpc",
-                                                    "clk-st231-aud-0",
-                                                    "clk-st231-gp-1",
-                                                    "clk-st231-dmu",
-                                                    "clk-icn-lmi",
-                                                    "clk-tx-icn-disp-1",
-                                                    "clk-icn-sbc",
-                                                    "clk-stfe-frc2",
-                                                    "clk-eth-phy",
-                                                    "clk-eth-ref-phyclk",
-                                                    "clk-flash-promip",
-                                                    "clk-main-disp",
-                                                    "clk-aux-disp",
-                                                    "clk-compo-dvp",
-                                                    "clk-tx-icn-hades",
-                                                    "clk-rx-icn-hades",
-                                                    "clk-icn-reg-16",
-                                                    "clk-pp-hades",
-                                                    "clk-clust-hades",
-                                                    "clk-hwpe-hades",
-                                                    "clk-fc-hades";
-                               clock-critical = <CLK_PROC_STFE>,
-                                                <CLK_ICN_CPU>,
-                                                <CLK_TX_ICN_DMU>,
-                                                <CLK_EXT2F_A9>,
-                                                <CLK_ICN_LMI>,
-                                                <CLK_ICN_SBC>;
-
                                /*
                                 * ARM Peripheral clock for timers
                                 */
 
                clk_s_d0_quadfs: clk-s-d0-quadfs@9104000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d0";
                        reg = <0x9104000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d0-fs0-ch0",
-                                            "clk-s-d0-fs0-ch1",
-                                            "clk-s-d0-fs0-ch2",
-                                            "clk-s-d0-fs0-ch3";
                };
 
                clockgen-d0@9104000 {
 
                        clk_s_d0_flexgen: clk-s-d0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-audio", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih410-d0";
 
                                clocks = <&clk_s_d0_quadfs 0>,
                                         <&clk_s_d0_quadfs 1>,
                                         <&clk_s_d0_quadfs 2>,
                                         <&clk_s_d0_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-pcm-0",
-                                                    "clk-pcm-1",
-                                                    "clk-pcm-2",
-                                                    "clk-spdiff",
-                                                    "clk-pcmr10-master",
-                                                    "clk-usb2-phy";
                        };
                };
 
                clk_s_d2_quadfs: clk-s-d2-quadfs@9106000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d2";
                        reg = <0x9106000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d2-fs0-ch0",
-                                            "clk-s-d2-fs0-ch1",
-                                            "clk-s-d2-fs0-ch2",
-                                            "clk-s-d2-fs0-ch3";
                };
 
                clockgen-d2@9106000 {
 
                        clk_s_d2_flexgen: clk-s-d2-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-video", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d2";
 
                                clocks = <&clk_s_d2_quadfs 0>,
                                         <&clk_s_d2_quadfs 1>,
                                         <&clk_sysin>,
                                         <&clk_sysin>,
                                         <&clk_tmdsout_hdmi>;
-
-                               clock-output-names = "clk-pix-main-disp",
-                                                    "clk-pix-pip",
-                                                    "clk-pix-gdp1",
-                                                    "clk-pix-gdp2",
-                                                    "clk-pix-gdp3",
-                                                    "clk-pix-gdp4",
-                                                    "clk-pix-aux-disp",
-                                                    "clk-denc",
-                                                    "clk-pix-hddac",
-                                                    "clk-hddac",
-                                                    "clk-sddac",
-                                                    "clk-pix-dvo",
-                                                    "clk-dvo",
-                                                    "clk-pix-hdmi",
-                                                    "clk-tmds-hdmi",
-                                                    "clk-ref-hdmiphy";
-                                                    };
+                       };
                };
 
                clk_s_d3_quadfs: clk-s-d3-quadfs@9107000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d3";
                        reg = <0x9107000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d3-fs0-ch0",
-                                            "clk-s-d3-fs0-ch1",
-                                            "clk-s-d3-fs0-ch2",
-                                            "clk-s-d3-fs0-ch3";
                };
 
                clockgen-d3@9107000 {
 
                        clk_s_d3_flexgen: clk-s-d3-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d3";
 
                                clocks = <&clk_s_d3_quadfs 0>,
                                         <&clk_s_d3_quadfs 1>,
                                         <&clk_s_d3_quadfs 2>,
                                         <&clk_s_d3_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-stfe-frc1",
-                                                    "clk-tsout-0",
-                                                    "clk-tsout-1",
-                                                    "clk-mchi",
-                                                    "clk-vsens-compo",
-                                                    "clk-frc1-remote",
-                                                    "clk-lpc-0",
-                                                    "clk-lpc-1";
                        };
                };
        };
index 48c3c64..b66e2b2 100644 (file)
@@ -11,7 +11,6 @@
        compatible = "st,stih418-b2199", "st,stih418";
 
        chosen {
-               bootargs = "clk_ignore_unused";
                stdout-path = &sbc_serial0;
        };
 
diff --git a/arch/arm/boot/dts/stih418-b2264.dts b/arch/arm/boot/dts/stih418-b2264.dts
new file mode 100644 (file)
index 0000000..a99604b
--- /dev/null
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2021 STMicroelectronics
+ * Author: Alain Volmat <avolmat@me.com>
+ */
+/dts-v1/;
+#include "stih418.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+/ {
+       model = "STiH418 B2264";
+       compatible = "st,stih418-b2264", "st,stih418";
+
+       chosen {
+               stdout-path = &sbc_serial0;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x40000000 0xc0000000>;
+       };
+
+       cpus {
+               cpu@0 {
+                       operating-points-v2 = <&cpu_opp_table>;
+                       /* u-boot puts hpen in SBC dmem at 0xb8 offset */
+                       cpu-release-addr = <0x94100b8>;
+               };
+               cpu@1 {
+                       operating-points-v2 = <&cpu_opp_table>;
+                       /* u-boot puts hpen in SBC dmem at 0xb8 offset */
+                       cpu-release-addr = <0x94100b8>;
+               };
+               cpu@2 {
+                       operating-points-v2 = <&cpu_opp_table>;
+                       /* u-boot puts hpen in SBC dmem at 0xb8 offset */
+                       cpu-release-addr = <0x94100b8>;
+               };
+               cpu@3 {
+                       operating-points-v2 = <&cpu_opp_table>;
+                       /* u-boot puts hpen in SBC dmem at 0xb8 offset */
+                       cpu-release-addr = <0x94100b8>;
+               };
+       };
+
+       cpu_opp_table: opp_table {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp00 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <784000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <784000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <784000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <784000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1500000000>;
+                       opp-microvolt = <784000>;
+               };
+       };
+
+       aliases {
+               ttyAS0 = &sbc_serial0;
+               ethernet0 = &ethernet0;
+       };
+
+       soc {
+               leds {
+                       compatible = "gpio-leds";
+                       green {
+                               gpios = <&pio1 3 GPIO_ACTIVE_HIGH>;
+                               default-state = "off";
+                       };
+               };
+
+               pin-controller-sbc@961f080 {
+                       gmac1 {
+                               rgmii1-0 {
+                                       st,pins {
+                                               rxd0 = <&pio1 4 ALT1 IN DE_IO 300 CLK_A>;
+                                               rxd1 = <&pio1 5 ALT1 IN DE_IO 300 CLK_A>;
+                                               rxd2 = <&pio1 6 ALT1 IN DE_IO 300 CLK_A>;
+                                               rxd3 = <&pio1 7 ALT1 IN DE_IO 300 CLK_A>;
+                                               rxdv = <&pio2 0 ALT1 IN DE_IO 300 CLK_A>;
+                                       };
+                               };
+                       };
+               };
+
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ethernet0 {
+       phy-mode = "rgmii";
+       pinctrl-0 = <&pinctrl_rgmii1 &pinctrl_rgmii1_mdio_1>;
+       st,tx-retime-src = "clkgen";
+
+       snps,reset-gpio = <&pio0 7 0>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 1000000>;
+
+       status = "okay";
+};
+
+&miphy28lp_phy {
+       phy_port0: port@9b22000 {
+               st,sata-gen = <2>; /* SATA GEN3 */
+               st,osc-rdy;
+       };
+};
+
+&mmc0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&sata0 {
+       status = "okay";
+};
+
+&sbc_serial0 {
+       status = "okay";
+};
+
+&spifsm {
+       status = "okay";
+};
+
+&st_dwc3 {
+       status = "okay";
+};
index 8fa0924..e84c476 100644 (file)
@@ -39,8 +39,6 @@
                                compatible = "st,stih418-clkgen-plla9";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clockgen-a9-pll-odf";
                        };
                };
 
 
                        clk_s_a0_pll: clk-s-a0-pll {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-a0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-a0-pll-ofd-0";
                        };
 
                        clk_s_a0_flexgen: clk-s-a0-flexgen {
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih410-a0";
 
                                #clock-cells = <1>;
 
                                clocks = <&clk_s_a0_pll 0>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-ic-lmi0",
-                                                    "clk-ic-lmi1";
                        };
                };
 
                        reg = <0x9103000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-c0-fs0-ch0",
-                                            "clk-s-c0-fs0-ch1",
-                                            "clk-s-c0-fs0-ch2",
-                                            "clk-s-c0-fs0-ch3";
                };
 
                clk_s_c0: clockgen-c@9103000 {
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll0";
+                               compatible = "st,clkgen-pll0-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll0-odf-0";
                        };
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,clkgen-pll1";
+                               compatible = "st,clkgen-pll1-c0";
 
                                clocks = <&clk_sysin>;
-
-                               clock-output-names = "clk-s-c0-pll1-odf-0";
                        };
 
                        clk_s_c0_flexgen: clk-s-c0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih418-c0";
 
                                clocks = <&clk_s_c0_pll0 0>,
                                         <&clk_s_c0_pll1 0>,
                                         <&clk_s_c0_quadfs 3>,
                                         <&clk_sysin>;
 
-                               clock-output-names = "clk-icn-gpu",
-                                                    "clk-fdma",
-                                                    "clk-nand",
-                                                    "clk-hva",
-                                                    "clk-proc-stfe",
-                                                    "clk-tp",
-                                                    "clk-rx-icn-dmu",
-                                                    "clk-rx-icn-hva",
-                                                    "clk-icn-cpu",
-                                                    "clk-tx-icn-dmu",
-                                                    "clk-mmc-0",
-                                                    "clk-mmc-1",
-                                                    "clk-jpegdec",
-                                                    "clk-icn-reg",
-                                                    "clk-proc-bdisp-0",
-                                                    "clk-proc-bdisp-1",
-                                                    "clk-pp-dmu",
-                                                    "clk-vid-dmu",
-                                                    "clk-dss-lpc",
-                                                    "clk-st231-aud-0",
-                                                    "clk-st231-gp-1",
-                                                    "clk-st231-dmu",
-                                                    "clk-icn-lmi",
-                                                    "clk-tx-icn-1",
-                                                    "clk-icn-sbc",
-                                                    "clk-stfe-frc2",
-                                                    "clk-eth-phyref",
-                                                    "clk-eth-ref-phyclk",
-                                                    "clk-flash-promip",
-                                                    "clk-main-disp",
-                                                    "clk-aux-disp",
-                                                    "clk-compo-dvp",
-                                                    "clk-tx-icn-hades",
-                                                    "clk-rx-icn-hades",
-                                                    "clk-icn-reg-16",
-                                                    "clk-pp-hevc",
-                                                    "clk-clust-hevc",
-                                                    "clk-hwpe-hevc",
-                                                    "clk-fc-hevc",
-                                                    "clk-proc-mixer",
-                                                    "clk-proc-sc",
-                                                    "clk-avsp-hevc";
-
                                /*
                                 * ARM Peripheral clock for timers
                                 */
 
                clk_s_d0_quadfs: clk-s-d0-quadfs@9104000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d0";
                        reg = <0x9104000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d0-fs0-ch0",
-                                            "clk-s-d0-fs0-ch1",
-                                            "clk-s-d0-fs0-ch2",
-                                            "clk-s-d0-fs0-ch3";
                };
 
                clockgen-d0@9104000 {
 
                        clk_s_d0_flexgen: clk-s-d0-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-audio", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih410-d0";
 
                                clocks = <&clk_s_d0_quadfs 0>,
                                         <&clk_s_d0_quadfs 1>,
                                         <&clk_s_d0_quadfs 2>,
                                         <&clk_s_d0_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-pcm-0",
-                                                    "clk-pcm-1",
-                                                    "clk-pcm-2",
-                                                    "clk-spdiff",
-                                                    "clk-pcmr10-master",
-                                                    "clk-usb2-phy";
                        };
                };
 
                clk_s_d2_quadfs: clk-s-d2-quadfs@9106000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d2";
                        reg = <0x9106000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d2-fs0-ch0",
-                                            "clk-s-d2-fs0-ch1",
-                                            "clk-s-d2-fs0-ch2",
-                                            "clk-s-d2-fs0-ch3";
                };
 
                clockgen-d2@9106000 {
 
                        clk_s_d2_flexgen: clk-s-d2-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen-video", "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih418-d2";
 
                                clocks = <&clk_s_d2_quadfs 0>,
                                         <&clk_s_d2_quadfs 1>,
                                         <&clk_sysin>,
                                         <&clk_sysin>,
                                         <&clk_tmdsout_hdmi>;
-
-                               clock-output-names = "clk-pix-main-disp",
-                                                    "",
-                                                    "",
-                                                    "",
-                                                    "",
-                                                    "clk-tmds-hdmi-div2",
-                                                    "clk-pix-aux-disp",
-                                                    "clk-denc",
-                                                    "clk-pix-hddac",
-                                                    "clk-hddac",
-                                                    "clk-sddac",
-                                                    "clk-pix-dvo",
-                                                    "clk-dvo",
-                                                    "clk-pix-hdmi",
-                                                    "clk-tmds-hdmi",
-                                                    "clk-ref-hdmiphy",
-                                                    "", "", "", "", "",
-                                                    "", "", "", "", "",
-                                                    "", "", "", "", "",
-                                                    "", "", "", "", "",
-                                                    "", "", "", "", "",
-                                                    "", "", "", "", "",
-                                                    "", "clk-vp9";
                        };
                };
 
                clk_s_d3_quadfs: clk-s-d3-quadfs@9107000 {
                        #clock-cells = <1>;
-                       compatible = "st,quadfs";
+                       compatible = "st,quadfs-d3";
                        reg = <0x9107000 0x1000>;
 
                        clocks = <&clk_sysin>;
-
-                       clock-output-names = "clk-s-d3-fs0-ch0",
-                                            "clk-s-d3-fs0-ch1",
-                                            "clk-s-d3-fs0-ch2",
-                                            "clk-s-d3-fs0-ch3";
                };
 
                clockgen-d3@9107000 {
 
                        clk_s_d3_flexgen: clk-s-d3-flexgen {
                                #clock-cells = <1>;
-                               compatible = "st,flexgen";
+                               compatible = "st,flexgen", "st,flexgen-stih407-d3";
 
                                clocks = <&clk_s_d3_quadfs 0>,
                                         <&clk_s_d3_quadfs 1>,
                                         <&clk_s_d3_quadfs 2>,
                                         <&clk_s_d3_quadfs 3>,
                                         <&clk_sysin>;
-
-                               clock-output-names = "clk-stfe-frc1",
-                                                    "clk-tsout-0",
-                                                    "clk-tsout-1",
-                                                    "clk-mchi",
-                                                    "clk-vsens-compo",
-                                                    "clk-frc1-remote",
-                                                    "clk-lpc-0",
-                                                    "clk-lpc-1";
                        };
                };
        };
index a05e227..97eda43 100644 (file)
        };
 
        soc {
+               rng11: rng@8a8a000 {
+                       status = "disabled";
+               };
+
                usb2_picophy1: phy2@0 {
                        compatible = "st,stih407-usb2-phy";
                        reg = <0 0>;
                        assigned-clock-parents = <&clk_s_c0_pll1 0>;
                        assigned-clock-rates = <200000000>;
                };
+
+               thermal@91a0000 {
+                       compatible = "st,stih407-thermal";
+                       reg = <0x91a0000 0x28>;
+                       clock-names = "thermal";
+                       clocks = <&clk_sysin>;
+                       interrupts = <GIC_SPI 205 IRQ_TYPE_EDGE_RISING>;
+               };
        };
 };
index 9ac1ffe..cb46326 100644 (file)
@@ -60,7 +60,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory@00000000 {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x2000000>;
        };
index 8c982ae..30905ce 100644 (file)
@@ -60,7 +60,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory@00000000 {
+       memory@0 {
                device_type = "memory";
                reg = <0x00000000 0x1000000>;
        };
index 95b0887..46b471d 100644 (file)
 &m4_rproc {
        memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
                        <&vdev0vring1>, <&vdev0buffer>;
-       mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
-       mbox-names = "vq0", "vq1", "shutdown";
+       mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
+       mbox-names = "vq0", "vq1", "shutdown", "detach";
        interrupt-parent = <&exti>;
        interrupts = <68 1>;
        status = "okay";
index fb45c5a..4b10b01 100644 (file)
 &usbphyc_port0 {
        phy-supply = <&vdd_usb>;
 };
+
+&usbphyc_port1 {
+       phy-supply = <&vdd_usb>;
+};
index 6cf1c8b..fbf3826 100644 (file)
@@ -29,6 +29,7 @@
                brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
                default-brightness-level = <8>;
                enable-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_panel_bl>;
                status = "okay";
        };
 
        panel {
                compatible = "edt,etm0700g0edh6";
                backlight = <&display_bl>;
+               power-supply = <&reg_panel_bl>;
 
                port {
                        lcd_panel_in: endpoint {
                };
        };
 
+       reg_panel_bl: regulator-panel-bl {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_backlight";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_panel_supply>;
+       };
+
+       reg_panel_supply: regulator-panel-supply {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_supply";
+               regulator-min-microvolt = <24000000>;
+               regulator-max-microvolt = <24000000>;
+       };
+
        sound {
                compatible = "audio-graph-card";
                routing =
                        sgtl5000_tx_endpoint: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&sai2a_endpoint>;
-                               frame-master;
-                               bitclock-master;
+                               frame-master = <&sgtl5000_tx_endpoint>;
+                               bitclock-master = <&sgtl5000_tx_endpoint>;
                        };
 
                        sgtl5000_rx_endpoint: endpoint@1 {
                                reg = <1>;
                                remote-endpoint = <&sai2b_endpoint>;
-                               frame-master;
-                               bitclock-master;
+                               frame-master = <&sgtl5000_rx_endpoint>;
+                               bitclock-master = <&sgtl5000_rx_endpoint>;
                        };
                };
 
index 64dca5b..6885948 100644 (file)
 &i2c4 {
        hdmi-transmitter@3d {
                compatible = "adi,adv7513";
-               reg = <0x3d>, <0x2d>, <0x4d>, <0x5d>;
-               reg-names = "main", "cec", "edid", "packet";
+               reg = <0x3d>, <0x4d>, <0x2d>, <0x5d>;
+               reg-names = "main", "edid", "cec", "packet";
                clocks = <&cec_clock>;
                clock-names = "cec";
 
                adi,input-depth = <8>;
                adi,input-colorspace = "rgb";
                adi,input-clock = "1x";
-               adi,input-style = <1>;
-               adi,input-justification = "evenly";
 
                ports {
                        #address-cells = <1>;
index 59f1884..899bfe0 100644 (file)
                        cs42l51_tx_endpoint: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&sai2a_endpoint>;
-                               frame-master;
-                               bitclock-master;
+                               frame-master = <&cs42l51_tx_endpoint>;
+                               bitclock-master = <&cs42l51_tx_endpoint>;
                        };
 
                        cs42l51_rx_endpoint: endpoint@1 {
                                reg = <1>;
                                remote-endpoint = <&sai2b_endpoint>;
-                               frame-master;
-                               bitclock-master;
+                               frame-master = <&cs42l51_rx_endpoint>;
+                               bitclock-master = <&cs42l51_rx_endpoint>;
                        };
                };
        };
 &m4_rproc {
        memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
                        <&vdev0vring1>, <&vdev0buffer>;
-       mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
-       mbox-names = "vq0", "vq1", "shutdown";
+       mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
+       mbox-names = "vq0", "vq1", "shutdown", "detach";
        interrupt-parent = <&exti>;
        interrupts = <68 1>;
        status = "okay";
index c04162d..7fd901f 100644 (file)
                        reg = <0x4c>;
                        vcc-supply = <&palmas_ldo6_reg>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_EDGE_FALLING>;
                };
        };
 
index 1e30fa4..cde9ae8 100644 (file)
                        compatible = "ti,tmp451";
                        reg = <0x4c>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_EDGE_FALLING>;
                        #thermal-sensor-cells = <1>;
                        vcc-supply = <&reg_module_3v3>;
                };
index 608896f..a46d9ba 100644 (file)
                        compatible = "ti,tmp451";
                        reg = <0x4c>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_EDGE_FALLING>;
                        #thermal-sensor-cells = <1>;
                        vcc-supply = <&reg_module_3v3>;
                };
index 414cd1c..35ab296 100644 (file)
                        compatible = "ti,tmp451";
                        reg = <0x4c>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_EDGE_FALLING>;
                };
 
                eeprom@56 {
index 5f71add..63a8127 100644 (file)
@@ -91,7 +91,7 @@
                        compatible = "ti,tmp451";
                        reg = <0x4c>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(I, 6) IRQ_TYPE_EDGE_FALLING>;
 
                        #thermal-sensor-cells = <1>;
                };
index 1976c38..2280d75 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /dts-v1/;
 
+#include <dt-bindings/input/atmel-maxtouch.h>
 #include <dt-bindings/input/gpio-keys.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/thermal/thermal.h>
                        vdda-supply = <&vdd_3v3_sys>;
                        vdd-supply  = <&vdd_3v3_sys>;
 
-                       atmel,wakeup-method = <1>;
+                       atmel,wakeup-method = <ATMEL_MXT_WAKEUP_I2C_SCL>;
                };
 
                gyroscope@68 {
                                        interrupt-parent = <&gpio>;
                                        interrupts = <TEGRA_GPIO(S, 7) IRQ_TYPE_EDGE_RISING>;
 
+                                       vdd-supply   = <&vdd_1v8_sys>;
+                                       vddio-supply = <&vdd_1v8_sys>;
+
                                        mount-matrix =   "0",  "1",  "0",
                                                         "1",  "0",  "0",
                                                         "0",  "0", "-1";
                        compatible = "onnn,nct1008";
                        reg = <0x4c>;
                        vcc-supply = <&vdd_3v3_sys>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_EDGE_FALLING>;
+
                        #thermal-sensor-cells = <1>;
                };
        };
                nvidia,xcvr-setup-use-fuses;
                nvidia,xcvr-lsfslew = <2>;
                nvidia,xcvr-lsrslew = <2>;
-               vbus-supply = <&vdd_vbus1>;
        };
 
        usb@c5008000 {
                nvidia,xcvr-setup-use-fuses;
                nvidia,xcvr-lsfslew = <2>;
                nvidia,xcvr-lsrslew = <2>;
-               vbus-supply = <&vdd_vbus3>;
+               vbus-supply = <&vdd_5v0_sys>;
        };
 
        brcm_wifi_pwrseq: wifi-pwrseq {
                vin-supply = <&vdd_5v0_sys>;
        };
 
-       vdd_vbus1: regulator@4 {
-               compatible = "regulator-fixed";
-               regulator-name = "vdd_usb1_vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               regulator-always-on;
-               gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               vin-supply = <&vdd_5v0_sys>;
-       };
-
-       vdd_vbus3: regulator@5 {
-               compatible = "regulator-fixed";
-               regulator-name = "vdd_usb3_vbus";
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               regulator-always-on;
-               gpio = <&gpio TEGRA_GPIO(D, 3) GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-               vin-supply = <&vdd_5v0_sys>;
-       };
-
        sound {
                compatible = "nvidia,tegra-audio-wm8903-picasso",
                             "nvidia,tegra-audio-wm8903";
        };
 
        thermal-zones {
+               /*
+                * NCT1008 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution.  The "skin"
+                * zone is a simpler solution which prevents A500 from
+                * getting too hot from a user's tactile perspective.
+                * The CPU zone is intended to protect silicon from damage.
+                */
+
                skin-thermal {
                        polling-delay-passive = <1000>; /* milliseconds */
-                       polling-delay = <0>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
 
                        thermal-sensors = <&nct1008 0>;
+
+                       trips {
+                               trip0: skin-alert {
+                                       /* start throttling at 60C */
+                                       temperature = <60000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip1: skin-crit {
+                                       /* shut down at 70C */
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&trip0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                cpu-thermal {
                        thermal-sensors = <&nct1008 1>;
 
                        trips {
-                               trip0: cpu-alert0 {
-                                       /* start throttling at 60C */
-                                       temperature = <60000>;
+                               trip2: cpu-alert {
+                                       /* throttle at 85C until temperature drops to 84.8C */
+                                       temperature = <85000>;
                                        hysteresis = <200>;
                                        type = "passive";
                                };
 
-                               trip1: cpu-crit {
-                                       /* shut down at 70C */
-                                       temperature = <70000>;
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
                                        hysteresis = <2000>;
                                        type = "critical";
                                };
                        };
 
                        cooling-maps {
-                               map0 {
-                                       trip = <&trip0>;
+                               map1 {
+                                       trip = <&trip2>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
index 3180bff..acc816b 100644 (file)
                adt7461: temperature-sensor@4c {
                        compatible = "adi,adt7461";
                        reg = <0x4c>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_EDGE_FALLING>;
+
                        #thermal-sensor-cells = <1>;
                };
        };
index 95e6bcc..dd4d506 100644 (file)
                                nvidia,pins = "ata", "atb", "atc", "atd", "ate",
                                        "cdev1", "cdev2", "dap1", "dtb", "gma",
                                        "gmb", "gmc", "gmd", "gme", "gpu7",
-                                       "gpv", "i2cp", "pta", "rm", "slxa",
-                                       "slxk", "spia", "spib", "uac";
+                                       "gpv", "i2cp", "irrx", "irtx", "pta",
+                                       "rm", "slxa", "slxk", "spia", "spib",
+                                       "uac";
                                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
                        };
                        conf_ddc {
                                nvidia,pins = "ddc", "dta", "dtd", "kbca",
                                        "kbcb", "kbcc", "kbcd", "kbce", "kbcf",
-                                       "sdc";
+                                       "sdc", "uad", "uca";
                                nvidia,pull = <TEGRA_PIN_PULL_UP>;
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
                        };
                                        "lvp0", "owc", "sdb";
                                nvidia,tristate = <TEGRA_PIN_ENABLE>;
                        };
-                       conf_irrx {
-                               nvidia,pins = "irrx", "irtx", "sdd", "spic",
-                                       "spie", "spih", "uaa", "uab", "uad",
-                                       "uca", "ucb";
+                       conf_sdd {
+                               nvidia,pins = "sdd", "spic", "spie", "spih",
+                                       "uaa", "uab", "ucb";
                                nvidia,pull = <TEGRA_PIN_PULL_UP>;
                                nvidia,tristate = <TEGRA_PIN_ENABLE>;
                        };
index ae8300b..9732cd6 100644 (file)
                        compatible = "onnn,nct1008";
                        reg = <0x4c>;
                        vcc-supply = <&vdd_3v3_sys>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(S, 3) IRQ_TYPE_EDGE_FALLING>;
+
                        #thermal-sensor-cells = <1>;
                };
 
        };
 
        thermal-zones {
-               cpu-thermal {
+               /*
+                * NCT72 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution.  The "skin"
+                * zone is a simpler solution which prevents Nexus 7
+                * from getting too hot from a user's tactile perspective.
+                * The CPU zone is intended to protect silicon from damage.
+                */
+
+               skin-thermal {
                        polling-delay-passive = <1000>; /* milliseconds */
                        polling-delay = <5000>; /* milliseconds */
 
-                       thermal-sensors = <&nct72 1>;
+                       thermal-sensors = <&nct72 0>;
 
                        trips {
-                               trip0: cpu-alert0 {
+                               trip0: skin-alert {
                                        /* throttle at 57C until temperature drops to 56.8C */
                                        temperature = <57000>;
                                        hysteresis = <200>;
                                        type = "passive";
                                };
 
-                               trip1: cpu-crit {
+                               trip1: skin-crit {
                                        /* shut down at 65C */
                                        temperature = <65000>;
                                        hysteresis = <2000>;
                                };
                        };
                };
+
+               cpu-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 1>;
+
+                       trips {
+                               trip2: cpu-alert {
+                                       /* throttle at 85C until temperature drops to 84.8C */
+                                       temperature = <85000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&trip2>;
+                                       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>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
        };
 };
index d9dd115..448f139 100644 (file)
                        reg = <0x4c>;
                        vcc-supply = <&sys_3v3_reg>;
                        interrupt-parent = <&gpio>;
-                       interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_EDGE_FALLING>;
                        #thermal-sensor-cells = <1>;
                };
 
index ab8744f..90db5ff 100644 (file)
                        compatible = "onnn,nct1008";
                        reg = <0x4c>;
                        vcc-supply = <&sys_3v3_reg>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_EDGE_FALLING>;
+
                        #thermal-sensor-cells = <1>;
-/*
- *                     The interrupt is bugged, once triggered it never clears.
- *                     interrupt-parent = <&gpio>;
- *                     interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>;
- */
                };
 
                pmic: pmic@2d {
                nvidia,pins = "pcc2";
                nvidia,function = "i2s4";
                nvidia,pull = <TEGRA_PIN_PULL_NONE>;
-               nvidia,tristate = <TEGRA_PIN_ENABLE>;
-               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
        };
        sdmmc4_rst_n_pcc3 {
                nvidia,pins = "sdmmc4_rst_n_pcc3";
index c577c19..eaf4951 100644 (file)
@@ -5,6 +5,7 @@
 #include <dt-bindings/pinctrl/pinctrl-tegra.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/soc/tegra-pmc.h>
+#include <dt-bindings/thermal/thermal.h>
 
 #include "tegra30-peripherals-opp.dtsi"
 
                reset-names = "fuse";
        };
 
+       tsensor: tsensor@70014000 {
+               compatible = "nvidia,tegra30-tsensor";
+               reg = <0x70014000 0x500>;
+               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA30_CLK_TSENSOR>;
+               resets = <&tegra_car TEGRA30_CLK_TSENSOR>;
+
+               assigned-clocks = <&tegra_car TEGRA30_CLK_TSENSOR>;
+               assigned-clock-parents = <&tegra_car TEGRA30_CLK_CLK_M>;
+               assigned-clock-rates = <500000>;
+
+               #thermal-sensor-cells = <1>;
+       };
+
        hda@70030000 {
                compatible = "nvidia,tegra30-hda";
                reg = <0x70030000 0x10000>;
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0>;
                        clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <1>;
                        clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@2 {
+               cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <2>;
                        clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
+                       #cooling-cells = <2>;
                };
 
-               cpu@3 {
+               cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <3>;
                        clocks = <&tegra_car TEGRA30_CLK_CCLK_G>;
+                       #cooling-cells = <2>;
                };
        };
 
                                     <&{/cpus/cpu@2}>,
                                     <&{/cpus/cpu@3}>;
        };
+
+       thermal-zones {
+               tsensor0-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&tsensor 0>;
+
+                       trips {
+                               level1_trip: dvfs-alert {
+                                       /* throttle at 80C until temperature drops to 79.8C */
+                                       temperature = <80000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               level2_trip: cpu-div2-throttle {
+                                       /* hardware CPU x2 freq throttle at 85C */
+                                       temperature = <85000>;
+                                       hysteresis = <200>;
+                                       type = "hot";
+                               };
+
+                               level3_trip: soc-critical {
+                                       /* hardware shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&level1_trip>;
+                                       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>,
+                                                        <&actmon THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+
+               tsensor1-thermal {
+                       status = "disabled";
+
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <0>; /* milliseconds */
+
+                       thermal-sensors = <&tsensor 1>;
+
+                       trips {
+                               dvfs-alert {
+                                       temperature = <80000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+                       };
+               };
+       };
 };
index 6f1e0f0..043ddd7 100644 (file)
                        compatible = "atmel,at93c46d";
                        pinctrl-0 = <&pinctrl_gpio_e6185_eeprom_sel>;
                        pinctrl-names = "default";
-                       #address-cells = <0>;
-                       #size-cells = <0>;
                        reg = <1>;
                        spi-max-frequency = <500000>;
                        spi-cs-high;
index df9ad83..47c2a4b 100644 (file)
                        #size-cells = <0>;
                };
 
+               smcc: memory-controller@e000e000 {
+                       compatible = "arm,pl353-smc-r2p1", "arm,primecell";
+                       reg = <0xe000e000 0x0001000>;
+                       status = "disabled";
+                       clock-names = "memclk", "apb_pclk";
+                       clocks = <&clkc 11>, <&clkc 44>;
+                       ranges = <0x0 0x0 0xe1000000 0x1000000 /* Nand CS region */
+                                 0x1 0x0 0xe2000000 0x2000000 /* SRAM/NOR CS0 region */
+                                 0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
+                       #address-cells = <2>;
+                       #size-cells = <1>;
+
+                       nfc0: nand-controller@0,0 {
+                               compatible = "arm,pl353-nand-r2p1";
+                               reg = <0 0 0x1000000>;
+                               status = "disabled";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
                sdhci0: mmc@e0100000 {
                        compatible = "arasan,sdhci-8.9a";
                        status = "disabled";
index b0b836a..53fa6db 100644 (file)
        pinctrl-0 = <&pinctrl_gpio0_default>;
 };
 
+&nfc0 {
+       status = "okay";
+
+       nand@0 {
+               reg = <0>;
+       };
+};
+
 &pinctrl0 {
        pinctrl_gpio0_default: gpio0-default {
                mux {
        };
 };
 
+&smcc {
+       status = "okay";
+};
+
 &sdhci0 {
        status = "okay";
        disable-wp;
index be81330..8f2a80f 100644 (file)
                };
        };
 
-       reg_vcc3v3: vcc3v3 {
+       reg_vcc1v8: regulator-vcc1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_vcc3v3: regulator-vcc3v3 {
                compatible = "regulator-fixed";
                regulator-name = "vcc3v3";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
        };
 
-       reg_vdd_cpu_gpu: vdd-cpu-gpu {
+       reg_vdd_cpu_gpu: regulator-vdd-cpu-gpu {
                compatible = "regulator-fixed";
                regulator-name = "vdd-cpu-gpu";
                regulator-min-microvolt = <1135000>;
        status = "okay";
 };
 
+&mmc2 {
+       vmmc-supply = <&reg_vcc3v3>;
+       vqmmc-supply = <&reg_vcc1v8>;
+       bus-width = <8>;
+       non-removable;
+       cap-mmc-hw-reset;
+       mmc-hs200-1_8v;
+       status = "okay";
+};
+
 &ohci0 {
        status = "okay";
 };
        status = "okay";
 };
 
+&pio {
+       vcc-pc-supply = <&reg_vcc1v8>;
+       vcc-pd-supply = <&reg_vcc3v3>;
+       vcc-pg-supply = <&reg_vcc1v8>;
+};
+
 &r_ir {
        linux,rc-map-name = "rc-tanix-tx5max";
        status = "okay";
index 7273eed..7d94160 100644 (file)
 
 /* Bluetooth on AP6212 */
 &uart_A {
-       status = "disabled";
+       status = "okay";
        pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
        pinctrl-names = "default";
+       uart-has-rtscts;
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&wifi_32k>;
+               clock-names = "lpo";
+               vbat-supply = <&vddio_ao3v3>;
+               vddio-supply = <&vddio_ao18>;
+               host-wakeup-gpios = <&gpio GPIOX_21 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
+       };
 };
 
 /* 40-pin CON1 */
index 9b0b81f..66daf3a 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include "meson-gxbb.dtsi"
+#include <dt-bindings/sound/meson-aiu.h>
 
 / {
        compatible = "tronsmart,vega-s95", "amlogic,meson-gxbb";
                stdout-path = "serial0:115200n8";
        };
 
+       spdif_dit: audio-codec-0 {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dit";
+               status = "okay";
+               sound-name-prefix = "DIT";
+       };
+
        leds {
                compatible = "gpio-leds";
 
                clocks = <&wifi32k>;
                clock-names = "ext_clock";
        };
+
+       sound {
+               compatible = "amlogic,gx-sound-card";
+               model = "VEGA-S95";
+               assigned-clocks = <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>,
+                                 <&clkc CLKID_MPLL2>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+                       };
+               };
+
+               dai-link-3 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
+
+                       codec-0 {
+                               sound-dai = <&spdif_dit>;
+                       };
+               };
+
+               dai-link-4 {
+                       sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+                       codec-0 {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&aiu {
+       status = "okay";
+       pinctrl-0 = <&spdif_out_y_pins>;
+       pinctrl-names = "default";
 };
 
 &cec_AO {
index 60feac0..6ab1cc1 100644 (file)
 };
 
 &sd_emmc_a {
+       max-frequency = <100000000>;
+
        brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
index 18a4b7a..86bdc0b 100644 (file)
        #size-cells = <0>;
 
        bus-width = <4>;
-       max-frequency = <60000000>;
+       cap-sd-highspeed;
+       max-frequency = <100000000>;
 
        non-removable;
        disable-wp;
index dfa7a37..236c0a1 100644 (file)
@@ -10,6 +10,7 @@
 /dts-v1/;
 
 #include "meson-gxm.dtsi"
+#include <dt-bindings/sound/meson-aiu.h>
 
 / {
        compatible = "nexbox,a1", "amlogic,s912", "amlogic,meson-gxm";
                stdout-path = "serial0:115200n8";
        };
 
+       spdif_dit: audio-codec-0 {
+               #sound-dai-cells = <0>;
+               compatible = "linux,spdif-dit";
+               status = "okay";
+               sound-name-prefix = "DIT";
+       };
+
        memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
                        };
                };
        };
+
+       sound {
+               compatible = "amlogic,gx-sound-card";
+               model = "NEXBOX-A1";
+               assigned-clocks = <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>,
+                                 <&clkc CLKID_MPLL2>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <393216000>;
+               status = "okay";
+
+               dai-link-0 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
+               };
+
+               dai-link-1 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
+               };
+
+               dai-link-2 {
+                       sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+
+                       codec-0 {
+                               sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
+                       };
+               };
+
+               dai-link-3 {
+                       sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
+
+                       codec-0 {
+                               sound-dai = <&spdif_dit>;
+                       };
+               };
+
+               dai-link-4 {
+                       sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+                       codec-0 {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&aiu {
+       status = "okay";
+       pinctrl-0 = <&spdif_out_h_pins>;
+       pinctrl-names = "default";
 };
 
 &cec_AO {
index 18a912e..6a6f7dd 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
                cpu0: cpu@100 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        clock-names = "apolloclk";
                        operating-points-v2 = <&cluster_a53_opp_table>;
                        #cooling-cells = <2>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&cluster_a53_l2>;
                };
 
                cpu1: cpu@101 {
                        clock-frequency = <1300000000>;
                        operating-points-v2 = <&cluster_a53_opp_table>;
                        #cooling-cells = <2>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&cluster_a53_l2>;
                };
 
                cpu2: cpu@102 {
                        clock-frequency = <1300000000>;
                        operating-points-v2 = <&cluster_a53_opp_table>;
                        #cooling-cells = <2>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&cluster_a53_l2>;
                };
 
                cpu3: cpu@103 {
                        clock-frequency = <1300000000>;
                        operating-points-v2 = <&cluster_a53_opp_table>;
                        #cooling-cells = <2>;
+                       i-cache-size = <0x8000>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <256>;
+                       d-cache-size = <0x8000>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&cluster_a53_l2>;
                };
 
                cpu4: cpu@0 {
                        clock-names = "atlasclk";
                        operating-points-v2 = <&cluster_a57_opp_table>;
                        #cooling-cells = <2>;
+                       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 = <&cluster_a57_l2>;
                };
 
                cpu5: cpu@1 {
                        clock-frequency = <1900000000>;
                        operating-points-v2 = <&cluster_a57_opp_table>;
                        #cooling-cells = <2>;
+                       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 = <&cluster_a57_l2>;
                };
 
                cpu6: cpu@2 {
                        clock-frequency = <1900000000>;
                        operating-points-v2 = <&cluster_a57_opp_table>;
                        #cooling-cells = <2>;
+                       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 = <&cluster_a57_l2>;
                };
 
                cpu7: cpu@3 {
                        clock-frequency = <1900000000>;
                        operating-points-v2 = <&cluster_a57_opp_table>;
                        #cooling-cells = <2>;
+                       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 = <&cluster_a57_l2>;
+               };
+
+               cluster_a57_l2: l2-cache0 {
+                       compatible = "cache";
+                       cache-size = <0x200000>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
+               };
+
+               cluster_a53_l2: l2-cache1 {
+                       compatible = "cache";
+                       cache-size = <0x40000>;
+                       cache-line-size = <64>;
+                       cache-sets = <256>;
                };
        };
 
index 10244e5..c73a597 100644 (file)
                        compatible = "arm,cortex-a57";
                        reg = <0x0>;
                        enable-method = "psci";
+                       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 = <&atlas_l2>;
                };
 
                cpu_atlas1: cpu@1 {
                        compatible = "arm,cortex-a57";
                        reg = <0x1>;
                        enable-method = "psci";
+                       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 = <&atlas_l2>;
                };
 
                cpu_atlas2: cpu@2 {
                        compatible = "arm,cortex-a57";
                        reg = <0x2>;
                        enable-method = "psci";
+                       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 = <&atlas_l2>;
                };
 
                cpu_atlas3: cpu@3 {
                        compatible = "arm,cortex-a57";
                        reg = <0x3>;
                        enable-method = "psci";
+                       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 = <&atlas_l2>;
+               };
+
+               atlas_l2: l2-cache0 {
+                       compatible = "cache";
+                       cache-size = <0x200000>;
+                       cache-line-size = <64>;
+                       cache-sets = <2048>;
                };
        };
 
                        #address-cells = <0>;
                        interrupt-controller;
                        reg =   <0x11001000 0x1000>,
-                               <0x11002000 0x1000>,
+                               <0x11002000 0x2000>,
                                <0x11004000 0x2000>,
                                <0x11006000 0x2000>;
                };
index 25806c4..db9e36e 100644 (file)
@@ -19,6 +19,7 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1046a-rdb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-rdb.dtb
+dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1088a-ten64.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-qds.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-rdb.dtb
 dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls2080a-simu.dtb
@@ -42,10 +43,12 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw71xx-0x.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw7901.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw7902.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-beacon-kit.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-var-som-symphony.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mn-venice-gw7902.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-phyboard-pollux-rdk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-evk.dtb
@@ -55,6 +58,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-devkit.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-r2.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-r3.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-librem5-r4.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mq-mnt-reform2.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-nitrogen.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-phanbell.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-pico-pi.dtb
index db3d303..6d22efb 100644 (file)
                        };
 
                        eeprom@52 {
-                               compatible = "atmel,24c512";
+                               compatible = "onnn,cat24c04", "atmel,24c04";
                                reg = <0x52>;
                        };
-
-                       eeprom@53 {
-                               compatible = "atmel,24c512";
-                               reg = <0x53>;
-                       };
-
                };
        };
 };
index 60acdf0..7025aad 100644 (file)
        };
 
        eeprom@52 {
-               compatible = "atmel,24c512";
+               compatible = "onnn,cat24c05", "atmel,24c04";
                reg = <0x52>;
        };
-
-       eeprom@53 {
-               compatible = "atmel,24c512";
-               reg = <0x53>;
-       };
 };
 
 &i2c3 {
index bf7b43a..1bfbce6 100644 (file)
        status = "okay";
 
        mdio1_phy5: ethernet-phy@c {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0xc>;
        };
 
        mdio1_phy6: ethernet-phy@d {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0xd>;
        };
 
        mdio1_phy7: ethernet-phy@e {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0xe>;
        };
 
        mdio1_phy8: ethernet-phy@f {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0xf>;
        };
 
        mdio1_phy1: ethernet-phy@1c {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1c>;
        };
 
        mdio1_phy2: ethernet-phy@1d {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1d>;
        };
 
        mdio1_phy3: ethernet-phy@1e {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1e>;
        };
 
        mdio1_phy4: ethernet-phy@1f {
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1f>;
        };
 };
 
        mdio2_aquantia_phy: ethernet-phy@0 {
                compatible = "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x0>;
        };
 };
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1088a-ten64.dts b/arch/arm64/boot/dts/freescale/fsl-ls1088a-ten64.dts
new file mode 100644 (file)
index 0000000..3063851
--- /dev/null
@@ -0,0 +1,389 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for Travese Ten64 (LS1088) board
+ * Based on fsl-ls1088a-rdb.dts
+ * Copyright 2017-2020 NXP
+ * Copyright 2019-2021 Traverse Technologies
+ *
+ * Author: Mathew McBride <matt@traverse.com.au>
+ */
+
+/dts-v1/;
+
+#include "fsl-ls1088a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Traverse Ten64";
+       compatible = "traverse,ten64", "fsl,ls1088a";
+
+       aliases {
+               serial0 = &duart0;
+               serial1 = &duart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       buttons {
+               compatible = "gpio-keys";
+
+               /* Fired by system controller when
+                * external power off (e.g ATX Power Button)
+                * asserted
+                */
+               powerdn {
+                       label = "External Power Down";
+                       gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
+                       interrupts = <&gpio1 17 IRQ_TYPE_EDGE_FALLING>;
+                       linux,code = <KEY_POWER>;
+               };
+
+               /* Rear Panel 'ADMIN' button (GPIO_H) */
+               admin {
+                       label = "ADMIN button";
+                       gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
+                       interrupts = <&gpio3 8 IRQ_TYPE_EDGE_RISING>;
+                       linux,code = <KEY_WPS_BUTTON>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               sfp1down {
+                       label = "ten64:green:sfp1:down";
+                       gpios = <&gpio3 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               sfp2up {
+                       label = "ten64:green:sfp2:up";
+                       gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
+               };
+
+               admin {
+                       label = "ten64:admin";
+                       gpios = <&sfpgpio 12 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       sfp_xg0: dpmac2-sfp {
+               compatible = "sff,sfp";
+               i2c-bus = <&sfplower_i2c>;
+               tx-fault-gpios = <&sfpgpio 0 GPIO_ACTIVE_HIGH>;
+               tx-disable-gpios = <&sfpgpio 1 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpios = <&sfpgpio 2 GPIO_ACTIVE_LOW>;
+               los-gpios = <&sfpgpio 3 GPIO_ACTIVE_HIGH>;
+               maximum-power-milliwatt = <2000>;
+       };
+
+       sfp_xg1: dpmac1-sfp {
+               compatible = "sff,sfp";
+               i2c-bus = <&sfpupper_i2c>;
+               tx-fault-gpios = <&sfpgpio 4 GPIO_ACTIVE_HIGH>;
+               tx-disable-gpios = <&sfpgpio 5 GPIO_ACTIVE_HIGH>;
+               mod-def0-gpios = <&sfpgpio 6 GPIO_ACTIVE_LOW>;
+               los-gpios = <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
+               maximum-power-milliwatt = <2000>;
+       };
+};
+
+/* XG1 - Upper SFP */
+&dpmac1 {
+       sfp = <&sfp_xg1>;
+       pcs-handle = <&pcs1>;
+       phy-connection-type = "10gbase-r";
+       managed = "in-band-status";
+};
+
+/* XG0 - Lower SFP */
+&dpmac2 {
+       sfp = <&sfp_xg0>;
+       pcs-handle = <&pcs2>;
+       phy-connection-type = "10gbase-r";
+       managed = "in-band-status";
+};
+
+/* DPMAC3..6 is GE4 to GE8 */
+&dpmac3 {
+       phy-handle = <&mdio1_phy5>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs3_0>;
+};
+
+&dpmac4 {
+       phy-handle = <&mdio1_phy6>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs3_1>;
+};
+
+&dpmac5 {
+       phy-handle = <&mdio1_phy7>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs3_2>;
+};
+
+&dpmac6 {
+       phy-handle = <&mdio1_phy8>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs3_3>;
+};
+
+/* DPMAC7..10 is GE0 to GE3 */
+&dpmac7 {
+       phy-handle = <&mdio1_phy1>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs7_0>;
+};
+
+&dpmac8 {
+       phy-handle = <&mdio1_phy2>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs7_1>;
+};
+
+&dpmac9 {
+       phy-handle = <&mdio1_phy3>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs7_2>;
+};
+
+&dpmac10 {
+       phy-handle = <&mdio1_phy4>;
+       phy-connection-type = "qsgmii";
+       managed = "in-band-status";
+       pcs-handle = <&pcs7_3>;
+};
+
+&duart0 {
+       status = "okay";
+};
+
+&duart1 {
+       status = "okay";
+};
+
+&emdio1 {
+       status = "okay";
+
+       mdio1_phy5: ethernet-phy@c {
+               reg = <0xc>;
+       };
+
+       mdio1_phy6: ethernet-phy@d {
+               reg = <0xd>;
+       };
+
+       mdio1_phy7: ethernet-phy@e {
+               reg = <0xe>;
+       };
+
+       mdio1_phy8: ethernet-phy@f {
+               reg = <0xf>;
+       };
+
+       mdio1_phy1: ethernet-phy@1c {
+               reg = <0x1c>;
+       };
+
+       mdio1_phy2: ethernet-phy@1d {
+               reg = <0x1d>;
+       };
+
+       mdio1_phy3: ethernet-phy@1e {
+               reg = <0x1e>;
+       };
+
+       mdio1_phy4: ethernet-phy@1f {
+               reg = <0x1f>;
+       };
+};
+
+&esdhc {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       sfpgpio: gpio@76 {
+               compatible = "ti,tca9539";
+               reg = <0x76>;
+               #gpio-cells = <2>;
+               gpio-controller;
+
+               admin_led_lower {
+                       gpio-hog;
+                       gpios = <13 GPIO_ACTIVE_HIGH>;
+                       output-low;
+               };
+       };
+
+       at97sc: tpm@29 {
+               compatible = "atmel,at97sc3204t";
+               reg = <0x29>;
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       rx8035: rtc@32 {
+               compatible = "epson,rx8035";
+               reg = <0x32>;
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       i2c-switch@70 {
+               compatible = "nxp,pca9540";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+
+               sfpupper_i2c: i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+               };
+
+               sfplower_i2c: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+       };
+};
+
+&pcs_mdio1 {
+       status = "okay";
+};
+
+&pcs_mdio2 {
+       status = "okay";
+};
+
+&pcs_mdio3 {
+       status = "okay";
+};
+
+&pcs_mdio7 {
+       status = "okay";
+};
+
+&qspi {
+       status = "okay";
+
+       en25s64: flash@0 {
+               compatible = "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bl2";
+                               reg = <0 0x100000>;
+                       };
+
+                       partition@100000 {
+                               label = "bl3";
+                               reg = <0x100000 0x200000>;
+                       };
+
+                       partition@300000 {
+                               label = "mcfirmware";
+                               reg = <0x300000 0x200000>;
+                       };
+
+                       partition@500000 {
+                               label = "ubootenv";
+                               reg = <0x500000 0x80000>;
+                       };
+
+                       partition@580000 {
+                               label = "dpl";
+                               reg = <0x580000 0x40000>;
+                       };
+
+                       partition@5C0000 {
+                               label = "dpc";
+                               reg = <0x5C0000 0x40000>;
+                       };
+
+                       partition@600000 {
+                               label = "devicetree";
+                               reg = <0x600000 0x40000>;
+                       };
+               };
+       };
+
+       nand: flash@1 {
+               compatible = "spi-nand";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <1>;
+               spi-max-frequency = <20000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       /* reserved for future boot direct from NAND flash
+                        * (this would use the same layout as the 8MiB NOR flash)
+                        */
+                       partition@0 {
+                               label = "nand-boot-reserved";
+                               reg = <0 0x800000>;
+                       };
+
+                       /* recovery / install environment */
+                       partition@800000 {
+                               label = "recovery";
+                               reg = <0x800000 0x2000000>;
+                       };
+
+                       /* ubia (first OpenWrt) - a/b names to prevent confusion with ubi0/1/etc. */
+                       partition@2800000 {
+                               label = "ubia";
+                               reg = <0x2800000 0x6C00000>;
+                       };
+
+                       /* ubib (second OpenWrt) */
+                       partition@9400000 {
+                               label = "ubib";
+                               reg = <0x9400000 0x6C00000>;
+                       };
+               };
+       };
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index 2fa6cfb..f85e437 100644 (file)
                             <1 10 IRQ_TYPE_LEVEL_LOW>;/* Hypervisor PPI */
        };
 
+       pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+       };
+
        psci {
                compatible = "arm,psci-0.2";
                method = "smc";
                        status = "disabled";
                };
 
+               pcs_mdio1: mdio@8c07000 {
+                       compatible = "fsl,fman-memac-mdio";
+                       reg = <0x0 0x8c07000 0x0 0x1000>;
+                       little-endian;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       pcs1: ethernet-phy@0 {
+                               reg = <0>;
+                       };
+               };
+
                pcs_mdio2: mdio@8c0b000 {
                        compatible = "fsl,fman-memac-mdio";
                        reg = <0x0 0x8c0b000 0x0 0x1000>;
index 6056391..3e4e857 100644 (file)
 
        mdio2_phy1: ethernet-phy@0 {
                compatible = "ethernet-phy-id03a1.b4b0", "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 1 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x0>;
        };
 
        mdio2_phy2: ethernet-phy@1 {
                compatible = "ethernet-phy-id03a1.b4b0", "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1>;
        };
 
        mdio2_phy3: ethernet-phy@2 {
                compatible = "ethernet-phy-id03a1.b4b0", "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 4 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x2>;
        };
 
        mdio2_phy4: ethernet-phy@3 {
                compatible = "ethernet-phy-id03a1.b4b0", "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 5 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x3>;
        };
 };
index 5dbf274..028ff80 100644 (file)
@@ -65,6 +65,7 @@
        rgmii_phy1: ethernet-phy@1 {
                /* AR8035 PHY */
                compatible = "ethernet-phy-id004d.d072";
+               interrupts-extended = <&extirq 4 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x1>;
                eee-broken-1000t;
        };
@@ -72,6 +73,7 @@
        rgmii_phy2: ethernet-phy@2 {
                /* AR8035 PHY */
                compatible = "ethernet-phy-id004d.d072";
+               interrupts-extended = <&extirq 5 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x2>;
                eee-broken-1000t;
        };
        aquantia_phy1: ethernet-phy@4 {
                /* AQR107 PHY */
                compatible = "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 2 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x4>;
        };
 
        aquantia_phy2: ethernet-phy@5 {
                /* AQR107 PHY */
                compatible = "ethernet-phy-ieee802.3-c45";
+               interrupts-extended = <&extirq 3 IRQ_TYPE_LEVEL_LOW>;
                reg = <0x5>;
        };
 };
diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-img.dtsi
new file mode 100644 (file)
index 0000000..a906541
--- /dev/null
@@ -0,0 +1,80 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019-2021 NXP
+ * Zhou Guoniu <guoniu.zhou@nxp.com>
+ */
+img_subsys: bus@58000000 {
+       compatible = "simple-bus";
+       #address-cells = <1>;
+       #size-cells = <1>;
+       ranges = <0x58000000 0x0 0x58000000 0x1000000>;
+
+       img_ipg_clk: clock-img-ipg {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;
+               clock-output-names = "img_ipg_clk";
+       };
+
+       jpegdec: jpegdec@58400000 {
+               reg = <0x58400000 0x00050000>;
+               interrupts = <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>;
+               clocks = <&img_jpeg_dec_lpcg IMX_LPCG_CLK_0>,
+                        <&img_jpeg_dec_lpcg IMX_LPCG_CLK_4>;
+               clock-names = "per", "ipg";
+               assigned-clocks = <&img_jpeg_dec_lpcg IMX_LPCG_CLK_0>,
+                                 <&img_jpeg_dec_lpcg IMX_LPCG_CLK_4>;
+               assigned-clock-rates = <200000000>, <200000000>;
+               power-domains = <&pd IMX_SC_R_MJPEG_DEC_MP>,
+                               <&pd IMX_SC_R_MJPEG_DEC_S0>,
+                               <&pd IMX_SC_R_MJPEG_DEC_S1>,
+                               <&pd IMX_SC_R_MJPEG_DEC_S2>,
+                               <&pd IMX_SC_R_MJPEG_DEC_S3>;
+       };
+
+       jpegenc: jpegenc@58450000 {
+               reg = <0x58450000 0x00050000>;
+               interrupts = <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&img_jpeg_enc_lpcg IMX_LPCG_CLK_0>,
+                        <&img_jpeg_enc_lpcg IMX_LPCG_CLK_4>;
+               clock-names = "per", "ipg";
+               assigned-clocks = <&img_jpeg_enc_lpcg IMX_LPCG_CLK_0>,
+                                 <&img_jpeg_enc_lpcg IMX_LPCG_CLK_4>;
+               assigned-clock-rates = <200000000>, <200000000>;
+               power-domains = <&pd IMX_SC_R_MJPEG_ENC_MP>,
+                               <&pd IMX_SC_R_MJPEG_ENC_S0>,
+                               <&pd IMX_SC_R_MJPEG_ENC_S1>,
+                               <&pd IMX_SC_R_MJPEG_ENC_S2>,
+                               <&pd IMX_SC_R_MJPEG_ENC_S3>;
+       };
+
+       img_jpeg_dec_lpcg: clock-controller@585d0000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x585d0000 0x10000>;
+               #clock-cells = <1>;
+               clocks = <&img_ipg_clk>, <&img_ipg_clk>;
+               clock-indices = <IMX_LPCG_CLK_0>,
+                               <IMX_LPCG_CLK_4>;
+               clock-output-names = "img_jpeg_dec_lpcg_clk",
+                                    "img_jpeg_dec_lpcg_ipg_clk";
+               power-domains = <&pd IMX_SC_R_MJPEG_DEC_MP>;
+       };
+
+       img_jpeg_enc_lpcg: clock-controller@585f0000 {
+               compatible = "fsl,imx8qxp-lpcg";
+               reg = <0x585f0000 0x10000>;
+               #clock-cells = <1>;
+               clocks = <&img_ipg_clk>, <&img_ipg_clk>;
+               clock-indices = <IMX_LPCG_CLK_0>,
+                               <IMX_LPCG_CLK_4>;
+               clock-output-names = "img_jpeg_enc_lpcg_clk",
+                                    "img_jpeg_enc_lpcg_ipg_clk";
+               power-domains = <&pd IMX_SC_R_MJPEG_ENC_MP>;
+       };
+};
index c769fad..00f86ca 100644 (file)
 
        pmic@69 {
                compatible = "mps,mp5416";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_pmic>;
                reg = <0x69>;
 
                regulators {
+                       /* vdd_0p95: DRAM/GPU/VPU */
                        buck1 {
-                               regulator-name = "vdd_0p95";
-                               regulator-min-microvolt = <805000>;
+                               regulator-name = "buck1";
+                               regulator-min-microvolt = <800000>;
                                regulator-max-microvolt = <1000000>;
-                               regulator-max-microamp = <2500000>;
+                               regulator-min-microamp  = <3800000>;
+                               regulator-max-microamp  = <6800000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* vdd_soc */
                        buck2 {
-                               regulator-name = "vdd_soc";
-                               regulator-min-microvolt = <805000>;
+                               regulator-name = "buck2";
+                               regulator-min-microvolt = <800000>;
                                regulator-max-microvolt = <900000>;
-                               regulator-max-microamp = <1000000>;
+                               regulator-min-microamp  = <2200000>;
+                               regulator-max-microamp  = <5200000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* vdd_arm */
                        buck3_reg: buck3 {
-                               regulator-name = "vdd_arm";
-                               regulator-min-microvolt = <805000>;
+                               regulator-name = "buck3";
+                               regulator-min-microvolt = <800000>;
                                regulator-max-microvolt = <1000000>;
-                               regulator-max-microamp = <2200000>;
-                               regulator-boot-on;
+                               regulator-min-microamp  = <3800000>;
+                               regulator-max-microamp  = <6800000>;
+                               regulator-always-on;
                        };
 
+                       /* vdd_1p8 */
                        buck4 {
-                               regulator-name = "vdd_1p8";
+                               regulator-name = "buck4";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
-                               regulator-max-microamp = <500000>;
+                               regulator-min-microamp  = <2200000>;
+                               regulator-max-microamp  = <5200000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* nvcc_snvs_1p8 */
                        ldo1 {
-                               regulator-name = "nvcc_snvs_1p8";
+                               regulator-name = "ldo1";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
-                               regulator-max-microamp = <300000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* vdd_snvs_0p8 */
                        ldo2 {
-                               regulator-name = "vdd_snvs_0p8";
+                               regulator-name = "ldo2";
                                regulator-min-microvolt = <800000>;
                                regulator-max-microvolt = <800000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* vdd_0p9 */
                        ldo3 {
-                               regulator-name = "vdd_0p95";
-                               regulator-min-microvolt = <800000>;
-                               regulator-max-microvolt = <800000>;
+                               regulator-name = "ldo3";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
 
+                       /* vdd_1p8 */
                        ldo4 {
-                               regulator-name = "vdd_1p8";
+                               regulator-name = "ldo4";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                                regulator-boot-on;
+                               regulator-always-on;
                        };
                };
        };
                >;
        };
 
-       pinctrl_pmic: pmicgrp {
-               fsl,pins = <
-                       MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3       0x41
-               >;
-       };
-
        pinctrl_uart2: uart2grp {
                fsl,pins = <
                        MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX     0x140
index 905b68a..8e4a0ce 100644 (file)
@@ -46,7 +46,7 @@
                pinctrl-0 = <&pinctrl_reg_usb1_en>;
                compatible = "regulator-fixed";
                regulator-name = "usb_otg1_vbus";
-               gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
                enable-active-high;
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
 
        pinctrl_reg_usb1_en: regusb1grp {
                fsl,pins = <
-                       MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x41
+                       MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10      0x41
+                       MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x141
                        MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC     0x41
                >;
        };
index 5a1e9df..bafd5c8 100644 (file)
                pinctrl-0 = <&pinctrl_reg_usb2>;
                compatible = "regulator-fixed";
                regulator-name = "usb_usb2_vbus";
-               gpio = <&gpio4 17 GPIO_ACTIVE_HIGH>;
+               gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>;
                enable-active-high;
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
                interrupt-controller;
                #interrupt-cells = <1>;
-               #address-cells = <1>;
-               #size-cells = <0>;
 
                adc {
                        compatible = "gw,gsc-adc";
 
        pinctrl_reg_usb2: regusb1grp {
                fsl,pins = <
-                       MX8MM_IOMUXC_SAI1_TXD5_GPIO4_IO17       0x41
-                       MX8MM_IOMUXC_GPIO1_IO15_USB2_OTG_OC     0x41
+                       MX8MM_IOMUXC_SAI1_RXD0_GPIO4_IO2        0x41
+                       MX8MM_IOMUXC_SAI1_TXD5_GPIO4_IO17       0x140
+                       MX8MM_IOMUXC_GPIO1_IO15_USB2_OTG_OC     0x140
                >;
        };
 
 
        pinctrl_uart3_gpio: uart3gpiogrp {
                fsl,pins = <
-                       MX8MM_IOMUXC_SAI1_RXD4_GPIO4_IO6        0x40000041 /* RS232# */
-                       MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7        0x40000041 /* RS422# */
-                       MX8MM_IOMUXC_SAI1_RXD6_GPIO4_IO8        0x40000041 /* RS485# */
+                       MX8MM_IOMUXC_SAI1_RXD4_GPIO4_IO6        0x40000110 /* RS232# */
+                       MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7        0x40000110 /* RS422# */
+                       MX8MM_IOMUXC_SAI1_RXD6_GPIO4_IO8        0x40000110 /* RS485# */
                >;
        };
 
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7902.dts b/arch/arm64/boot/dts/freescale/imx8mm-venice-gw7902.dts
new file mode 100644 (file)
index 0000000..05cb609
--- /dev/null
@@ -0,0 +1,911 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2021 Gateworks Corporation
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+
+#include "imx8mm.dtsi"
+
+/ {
+       model = "Gateworks Venice GW7902 i.MX8MM board";
+       compatible = "gw,imx8mm-gw7902", "fsl,imx8mm";
+
+       aliases {
+               usb0 = &usbotg1;
+               usb1 = &usbotg2;
+       };
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0 0x80000000>;
+       };
+
+       can20m: can20m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <20000000>;
+               clock-output-names = "can20m";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               user-pb {
+                       label = "user_pb";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+               };
+
+               user-pb1x {
+                       label = "user_pb1x";
+                       linux,code = <BTN_1>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <0>;
+               };
+
+               key-erased {
+                       label = "key_erased";
+                       linux,code = <BTN_2>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <1>;
+               };
+
+               eeprom-wp {
+                       label = "eeprom_wp";
+                       linux,code = <BTN_3>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <2>;
+               };
+
+               tamper {
+                       label = "tamper";
+                       linux,code = <BTN_4>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <5>;
+               };
+
+               switch-hold {
+                       label = "switch_hold";
+                       linux,code = <BTN_5>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <7>;
+               };
+       };
+
+       led-controller {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+
+               led-0 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel1";
+                       gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-1 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel2";
+                       gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-2 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel3";
+                       gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-3 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel4";
+                       gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-4 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel5";
+                       gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+
+       pps {
+               compatible = "pps-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pps>;
+               gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_usb1_vbus: regulator-usb1 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb1>;
+               regulator-name = "usb_usb1_vbus";
+               gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_wifi: regulator-wifi {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_wl>;
+               regulator-name = "wifi";
+               gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <100>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_1 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_2 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_3 {
+       cpu-supply = <&buck2>;
+};
+
+&ddrc {
+       operating-points-v2 = <&ddrc_opp_table>;
+
+       ddrc_opp_table: opp-table {
+               compatible = "operating-points-v2";
+
+               opp-25M {
+                       opp-hz = /bits/ 64 <25000000>;
+               };
+
+               opp-100M {
+                       opp-hz = /bits/ 64 <100000000>;
+               };
+
+               opp-750M {
+                       opp-hz = /bits/ 64 <750000000>;
+               };
+       };
+};
+
+&ecspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1>;
+       cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       can@0 {
+               compatible = "microchip,mcp2515";
+               reg = <0>;
+               clocks = <&can20m>;
+               oscillator-frequency = <20000000>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+               spi-max-frequency = <10000000>;
+       };
+};
+
+/* off-board header */
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi2>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy0>;
+       local-mac-address = [00 00 00 00 00 00];
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+                       tx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       rx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       gsc: gsc@20 {
+               compatible = "gw,gsc";
+               reg = <0x20>;
+               pinctrl-0 = <&pinctrl_gsc>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+
+               adc {
+                       compatible = "gw,gsc-adc";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       channel@6 {
+                               gw,mode = <0>;
+                               reg = <0x06>;
+                               label = "temp";
+                       };
+
+                       channel@8 {
+                               gw,mode = <1>;
+                               reg = <0x08>;
+                               label = "vdd_bat";
+                       };
+
+                       channel@82 {
+                               gw,mode = <2>;
+                               reg = <0x82>;
+                               label = "vin";
+                               gw,voltage-divider-ohms = <22100 1000>;
+                               gw,voltage-offset-microvolt = <700000>;
+                       };
+
+                       channel@84 {
+                               gw,mode = <2>;
+                               reg = <0x84>;
+                               label = "vin_4p0";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@86 {
+                               gw,mode = <2>;
+                               reg = <0x86>;
+                               label = "vdd_3p3";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@88 {
+                               gw,mode = <2>;
+                               reg = <0x88>;
+                               label = "vdd_0p9";
+                       };
+
+                       channel@8c {
+                               gw,mode = <2>;
+                               reg = <0x8c>;
+                               label = "vdd_soc";
+                       };
+
+                       channel@8e {
+                               gw,mode = <2>;
+                               reg = <0x8e>;
+                               label = "vdd_arm";
+                       };
+
+                       channel@90 {
+                               gw,mode = <2>;
+                               reg = <0x90>;
+                               label = "vdd_1p8";
+                       };
+
+                       channel@92 {
+                               gw,mode = <2>;
+                               reg = <0x92>;
+                               label = "vdd_dram";
+                       };
+
+                       channel@98 {
+                               gw,mode = <2>;
+                               reg = <0x98>;
+                               label = "vdd_1p0";
+                       };
+
+                       channel@9a {
+                               gw,mode = <2>;
+                               reg = <0x9a>;
+                               label = "vdd_2p5";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@a2 {
+                               gw,mode = <2>;
+                               reg = <0xa2>;
+                               label = "vdd_gsc";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+               };
+       };
+
+       gpio: gpio@23 {
+               compatible = "nxp,pca9555";
+               reg = <0x23>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gsc>;
+               interrupts = <4>;
+       };
+
+       pmic@4b {
+               compatible = "rohm,bd71847";
+               reg = <0x4b>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+               rohm,reset-snvs-powered;
+               #clock-cells = <0>;
+               clocks = <&osc_32k 0>;
+               clock-output-names = "clk-32k-out";
+
+               regulators {
+                       /* vdd_soc: 0.805-0.900V (typ=0.8V) */
+                       BUCK1 {
+                               regulator-name = "buck1";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               regulator-ramp-delay = <1250>;
+                       };
+
+                       /* vdd_arm: 0.805-1.0V (typ=0.9V) */
+                       buck2: BUCK2 {
+                               regulator-name = "buck2";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               regulator-ramp-delay = <1250>;
+                               rohm,dvs-run-voltage = <1000000>;
+                               rohm,dvs-idle-voltage = <900000>;
+                       };
+
+                       /* vdd_0p9: 0.805-1.0V (typ=0.9V) */
+                       BUCK3 {
+                               regulator-name = "buck3";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_3p3 */
+                       BUCK4 {
+                               regulator-name = "buck4";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_1p8 */
+                       BUCK5 {
+                               regulator-name = "buck5";
+                               regulator-min-microvolt = <1605000>;
+                               regulator-max-microvolt = <1995000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_dram */
+                       BUCK6 {
+                               regulator-name = "buck6";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* nvcc_snvs_1p8 */
+                       LDO1 {
+                               regulator-name = "ldo1";
+                               regulator-min-microvolt = <1600000>;
+                               regulator-max-microvolt = <1900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_snvs_0p8 */
+                       LDO2 {
+                               regulator-name = "ldo2";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdda_1p8 */
+                       LDO3 {
+                               regulator-name = "ldo3";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO4 {
+                               regulator-name = "ldo4";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO6 {
+                               regulator-name = "ldo6";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c02";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c02";
+               reg = <0x51>;
+               pagesize = <16>;
+       };
+
+       eeprom@52 {
+               compatible = "atmel,24c02";
+               reg = <0x52>;
+               pagesize = <16>;
+       };
+
+       eeprom@53 {
+               compatible = "atmel,24c02";
+               reg = <0x53>;
+               pagesize = <16>;
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1672";
+               reg = <0x68>;
+       };
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       status = "okay";
+
+       accelerometer@19 {
+               compatible = "st,lis2de12";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_accel>;
+               reg = <0x19>;
+               st,drdy-int-pin = <1>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "INT1";
+       };
+};
+
+/* off-board header */
+&i2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+};
+
+/* off-board header */
+&i2c4 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       status = "okay";
+};
+
+/* off-board header */
+&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";
+};
+
+/* RS232/RS485/RS422 selectable */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>, <&pinctrl_uart1_gpio>;
+       rts-gpios = <&gpio4 10 GPIO_ACTIVE_LOW>;
+       cts-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+/* RS232 console */
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+/* bluetooth HCI */
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>, <&pinctrl_uart3_gpio>;
+       rts-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
+       cts-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4330-bt";
+               shutdown-gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* LTE Cat M1/NB1/EGPRS modem or GPS (loading option) */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       rts-gpios = <&gpio4 2 GPIO_ACTIVE_LOW>;
+       cts-gpios = <&gpio4 1 GPIO_ACTIVE_LOW>;
+       dtr-gpios = <&gpio4 3 GPIO_ACTIVE_LOW>;
+       dsr-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>;
+       dcd-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+/* SDIO WiFi */
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <4>;
+       non-removable;
+       vmmc-supply = <&reg_wifi>;
+       status = "okay";
+};
+
+/* eMMC */
+&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-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_NAND_CE0_B_GPIO3_IO1       0x40000159 /* M2_GDIS# */
+                       MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x40000041 /* M2_RST# */
+                       MX8MM_IOMUXC_NAND_DATA01_GPIO3_IO7      0x40000119 /* M2_OFF# */
+                       MX8MM_IOMUXC_GPIO1_IO15_GPIO1_IO15      0x40000159 /* M2_WDIS# */
+                       MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14       0x40000041 /* AMP GPIO1 */
+                       MX8MM_IOMUXC_SAI1_TXD0_GPIO4_IO12       0x40000041 /* AMP GPIO2 */
+                       MX8MM_IOMUXC_SAI1_TXC_GPIO4_IO11        0x40000041 /* AMP GPIO3 */
+                       MX8MM_IOMUXC_SAI1_MCLK_GPIO4_IO20       0x40000041 /* AMP_GPIO4 */
+                       MX8MM_IOMUXC_SAI2_RXFS_GPIO4_IO21       0x40000041 /* APP GPIO1 */
+                       MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27       0x40000041 /* APP GPIO2 */
+                       MX8MM_IOMUXC_SD1_DATA6_GPIO2_IO8        0x40000041 /* UART2_EN# */
+                       MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28       0x40000041 /* MIPI_GPIO1 */
+                       MX8MM_IOMUXC_SPDIF_EXT_CLK_GPIO5_IO5    0x40000041 /* MIPI_GPIO2 */
+                       MX8MM_IOMUXC_SPDIF_RX_GPIO5_IO4         0x40000041 /* MIPI_GPIO3/PWM2 */
+                       MX8MM_IOMUXC_SPDIF_TX_GPIO5_IO3         0x40000041 /* MIPI_GPIO4/PWM3 */
+               >;
+       };
+
+       pinctrl_accel: accelgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x159
+               >;
+       };
+
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_ENET_MDC_ENET1_MDC                 0x3
+                       MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO               0x3
+                       MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3           0x1f
+                       MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2           0x1f
+                       MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1           0x1f
+                       MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0           0x1f
+                       MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3           0x91
+                       MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2           0x91
+                       MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1           0x91
+                       MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0           0x91
+                       MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC           0x1f
+                       MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC           0x91
+                       MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL     0x91
+                       MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL     0x1f
+                       MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10              0x19 /* RST# */
+                       MX8MM_IOMUXC_GPIO1_IO11_GPIO1_IO11              0x19 /* IRQ# */
+                       MX8MM_IOMUXC_GPIO1_IO08_ENET1_1588_EVENT0_IN    0x141
+                       MX8MM_IOMUXC_GPIO1_IO09_ENET1_1588_EVENT0_OUT   0x141
+               >;
+       };
+
+       pinctrl_gsc: gscgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD1_DATA4_GPIO2_IO6        0x40
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C1_SCL_I2C1_SCL          0x400001c3
+                       MX8MM_IOMUXC_I2C1_SDA_I2C1_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C2_SCL_I2C2_SCL          0x400001c3
+                       MX8MM_IOMUXC_I2C2_SDA_I2C2_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL          0x400001c3
+                       MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL          0x400001c3
+                       MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_gpio_leds: gpioledgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI5_RXD0_GPIO3_IO21       0x19
+                       MX8MM_IOMUXC_SAI5_RXD2_GPIO3_IO23       0x19
+                       MX8MM_IOMUXC_SAI5_RXD1_GPIO3_IO22       0x19
+                       MX8MM_IOMUXC_SAI5_RXC_GPIO3_IO20        0x19
+                       MX8MM_IOMUXC_SAI5_MCLK_GPIO3_IO25       0x19
+               >;
+       };
+
+       pinctrl_pmic: pmicgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_NAND_DATA02_GPIO3_IO8      0x41
+               >;
+       };
+
+       pinctrl_pps: ppsgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI5_RXD3_GPIO3_IO24       0x141 /* PPS */
+               >;
+       };
+
+       pinctrl_reg_wl: regwlgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19     0x41 /* WLAN_WLON */
+               >;
+       };
+
+       pinctrl_reg_usb1: regusb1grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD1_DATA5_GPIO2_IO7        0x41
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI3_MCLK_SAI3_MCLK        0xd6
+                       MX8MM_IOMUXC_SAI3_RXD_SAI3_RX_DATA0     0xd6
+                       MX8MM_IOMUXC_SAI3_TXC_SAI3_TX_BCLK      0xd6
+                       MX8MM_IOMUXC_SAI3_TXD_SAI3_TX_DATA0     0xd6
+                       MX8MM_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC     0xd6
+               >;
+       };
+
+       pinctrl_spi1: spi1grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK    0x82
+                       MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI    0x82
+                       MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO    0x82
+                       MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9       0x40
+                       MX8MM_IOMUXC_SD1_DATA1_GPIO2_IO3        0x140 /* CAN_IRQ# */
+               >;
+       };
+
+       pinctrl_spi2: spi2grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK    0x82
+                       MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI    0x82
+                       MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO    0x82
+                       MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13      0x40 /* SS0 */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_UART1_RXD_UART1_DCE_RX     0x140
+                       MX8MM_IOMUXC_UART1_TXD_UART1_DCE_TX     0x140
+                       MX8MM_IOMUXC_SAI1_TXFS_GPIO4_IO10       0x140 /* RTS */
+                       MX8MM_IOMUXC_SAI2_TXFS_GPIO4_IO24       0x140 /* CTS */
+               >;
+       };
+
+       pinctrl_uart1_gpio: uart1gpiogrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI2_TXD0_GPIO4_IO26       0x40000110 /* HALF */
+                       MX8MM_IOMUXC_SAI2_TXC_GPIO4_IO25        0x40000110 /* TERM */
+                       MX8MM_IOMUXC_SAI2_RXD0_GPIO4_IO23       0x40000110 /* RS485 */
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_UART2_RXD_UART2_DCE_RX     0x140
+                       MX8MM_IOMUXC_UART2_TXD_UART2_DCE_TX     0x140
+               >;
+       };
+
+       pinctrl_uart3_gpio: uart3_gpiogrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12        0x41 /* BT_EN# */
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_UART3_RXD_UART3_DCE_RX     0x140
+                       MX8MM_IOMUXC_UART3_TXD_UART3_DCE_TX     0x140
+                       MX8MM_IOMUXC_SD1_CLK_GPIO2_IO0          0x140 /* CTS */
+                       MX8MM_IOMUXC_SD1_CMD_GPIO2_IO1          0x140 /* RTS */
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_UART4_RXD_UART4_DCE_RX     0x140
+                       MX8MM_IOMUXC_UART4_TXD_UART4_DCE_TX     0x140
+                       MX8MM_IOMUXC_SAI1_RXC_GPIO4_IO1         0x140 /* CTS */
+                       MX8MM_IOMUXC_SAI1_RXD0_GPIO4_IO2        0x140 /* RTS */
+                       MX8MM_IOMUXC_SAI1_RXD1_GPIO4_IO3        0x140 /* DTR */
+                       MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4        0x140 /* DSR */
+                       MX8MM_IOMUXC_SAI1_RXD4_GPIO4_IO6        0x140 /* DCD */
+                       MX8MM_IOMUXC_SAI1_RXD5_GPIO4_IO7        0x140 /* RI */
+                       MX8MM_IOMUXC_SAI1_RXFS_GPIO4_IO0        0x140 /* GNSS_PPS */
+                       MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6       0x141 /* GNSS_GASP */
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK         0x190
+                       MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD         0x1d0
+                       MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0     0x1d0
+                       MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1     0x1d0
+                       MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2     0x1d0
+                       MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3     0x1d0
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK       0x190
+                       MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD       0x1d0
+                       MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0   0x1d0
+                       MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1   0x1d0
+                       MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2   0x1d0
+                       MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3   0x1d0
+                       MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4     0x1d0
+                       MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5    0x1d0
+                       MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6    0x1d0
+                       MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7      0x1d0
+                       MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE   0x190
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK       0x194
+                       MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD       0x1d4
+                       MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0   0x1d4
+                       MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1   0x1d4
+                       MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2   0x1d4
+                       MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3   0x1d4
+                       MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4     0x1d4
+                       MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5    0x1d4
+                       MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6    0x1d4
+                       MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7      0x1d4
+                       MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE   0x194
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_NAND_WE_B_USDHC3_CLK       0x196
+                       MX8MM_IOMUXC_NAND_WP_B_USDHC3_CMD       0x1d6
+                       MX8MM_IOMUXC_NAND_DATA04_USDHC3_DATA0   0x1d6
+                       MX8MM_IOMUXC_NAND_DATA05_USDHC3_DATA1   0x1d6
+                       MX8MM_IOMUXC_NAND_DATA06_USDHC3_DATA2   0x1d6
+                       MX8MM_IOMUXC_NAND_DATA07_USDHC3_DATA3   0x1d6
+                       MX8MM_IOMUXC_NAND_RE_B_USDHC3_DATA4     0x1d6
+                       MX8MM_IOMUXC_NAND_CE2_B_USDHC3_DATA5    0x1d6
+                       MX8MM_IOMUXC_NAND_CE3_B_USDHC3_DATA6    0x1d6
+                       MX8MM_IOMUXC_NAND_CLE_USDHC3_DATA7      0x1d6
+                       MX8MM_IOMUXC_NAND_CE1_B_USDHC3_STROBE   0x196
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B    0xc6
+               >;
+       };
+};
index 1608a48..2f632e8 100644 (file)
        };
 
        pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_PPI 7
                             (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-               interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
        };
 
        timer {
        };
 
        usbphynop1: usbphynop1 {
+               #phy-cells = <0>;
                compatible = "usb-nop-xceiv";
                clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
                assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
        };
 
        usbphynop2: usbphynop2 {
+               #phy-cells = <0>;
                compatible = "usb-nop-xceiv";
                clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
                assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
                                clock-names = "usb1_ctrl_root_clk";
                                assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
                                assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
-                               fsl,usbphy = <&usbphynop1>;
+                               phys = <&usbphynop1>;
                                fsl,usbmisc = <&usbmisc1 0>;
                                status = "disabled";
                        };
                                clock-names = "usb1_ctrl_root_clk";
                                assigned-clocks = <&clk IMX8MM_CLK_USB_BUS>;
                                assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
-                               fsl,usbphy = <&usbphynop2>;
+                               phys = <&usbphynop2>;
                                fsl,usbmisc = <&usbmisc2 0>;
                                status = "disabled";
                        };
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-venice-gw7902.dts b/arch/arm64/boot/dts/freescale/imx8mn-venice-gw7902.dts
new file mode 100644 (file)
index 0000000..e77db49
--- /dev/null
@@ -0,0 +1,884 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2021 Gateworks Corporation
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+
+#include "imx8mn.dtsi"
+
+/ {
+       model = "Gateworks Venice GW7902 i.MX8MN board";
+       compatible = "gw,imx8mn-gw7902", "fsl,imx8mn";
+
+       aliases {
+               usb0 = &usbotg1;
+       };
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0 0x80000000>;
+       };
+
+       can20m: can20m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <20000000>;
+               clock-output-names = "can20m";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               user-pb {
+                       label = "user_pb";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <BTN_0>;
+               };
+
+               user-pb1x {
+                       label = "user_pb1x";
+                       linux,code = <BTN_1>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <0>;
+               };
+
+               key-erased {
+                       label = "key_erased";
+                       linux,code = <BTN_2>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <1>;
+               };
+
+               eeprom-wp {
+                       label = "eeprom_wp";
+                       linux,code = <BTN_3>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <2>;
+               };
+
+               tamper {
+                       label = "tamper";
+                       linux,code = <BTN_4>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <5>;
+               };
+
+               switch-hold {
+                       label = "switch_hold";
+                       linux,code = <BTN_5>;
+                       interrupt-parent = <&gsc>;
+                       interrupts = <7>;
+               };
+       };
+
+       led-controller {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_leds>;
+
+               led-0 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel1";
+                       gpios = <&gpio3 21 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-1 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel2";
+                       gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-2 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel3";
+                       gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-3 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel4";
+                       gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led-4 {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_GREEN>;
+                       label = "panel5";
+                       gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+
+       pps {
+               compatible = "pps-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pps>;
+               gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
+               status = "okay";
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_usb1_vbus: regulator-usb1 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb1>;
+               regulator-name = "usb_usb1_vbus";
+               gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_wifi: regulator-wifi {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_wl>;
+               regulator-name = "wifi";
+               gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <100>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_1 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_2 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_3 {
+       cpu-supply = <&buck2>;
+};
+
+&ddrc {
+       operating-points-v2 = <&ddrc_opp_table>;
+
+       ddrc_opp_table: opp-table {
+               compatible = "operating-points-v2";
+
+               opp-25M {
+                       opp-hz = /bits/ 64 <25000000>;
+               };
+
+               opp-100M {
+                       opp-hz = /bits/ 64 <100000000>;
+               };
+
+               opp-750M {
+                       opp-hz = /bits/ 64 <750000000>;
+               };
+       };
+};
+
+&ecspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1>;
+       cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       can@0 {
+               compatible = "microchip,mcp2515";
+               reg = <0>;
+               clocks = <&can20m>;
+               oscillator-frequency = <20000000>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+               spi-max-frequency = <10000000>;
+       };
+};
+
+/* off-board header */
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi2>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy0>;
+       local-mac-address = [00 00 00 00 00 00];
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+                       tx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       rx-fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       gsc: gsc@20 {
+               compatible = "gw,gsc";
+               reg = <0x20>;
+               pinctrl-0 = <&pinctrl_gsc>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+
+               adc {
+                       compatible = "gw,gsc-adc";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       channel@6 {
+                               gw,mode = <0>;
+                               reg = <0x06>;
+                               label = "temp";
+                       };
+
+                       channel@8 {
+                               gw,mode = <1>;
+                               reg = <0x08>;
+                               label = "vdd_bat";
+                       };
+
+                       channel@82 {
+                               gw,mode = <2>;
+                               reg = <0x82>;
+                               label = "vin";
+                               gw,voltage-divider-ohms = <22100 1000>;
+                               gw,voltage-offset-microvolt = <700000>;
+                       };
+
+                       channel@84 {
+                               gw,mode = <2>;
+                               reg = <0x84>;
+                               label = "vin_4p0";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@86 {
+                               gw,mode = <2>;
+                               reg = <0x86>;
+                               label = "vdd_3p3";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@88 {
+                               gw,mode = <2>;
+                               reg = <0x88>;
+                               label = "vdd_0p9";
+                       };
+
+                       channel@8c {
+                               gw,mode = <2>;
+                               reg = <0x8c>;
+                               label = "vdd_soc";
+                       };
+
+                       channel@8e {
+                               gw,mode = <2>;
+                               reg = <0x8e>;
+                               label = "vdd_arm";
+                       };
+
+                       channel@90 {
+                               gw,mode = <2>;
+                               reg = <0x90>;
+                               label = "vdd_1p8";
+                       };
+
+                       channel@92 {
+                               gw,mode = <2>;
+                               reg = <0x92>;
+                               label = "vdd_dram";
+                       };
+
+                       channel@98 {
+                               gw,mode = <2>;
+                               reg = <0x98>;
+                               label = "vdd_1p0";
+                       };
+
+                       channel@9a {
+                               gw,mode = <2>;
+                               reg = <0x9a>;
+                               label = "vdd_2p5";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+
+                       channel@a2 {
+                               gw,mode = <2>;
+                               reg = <0xa2>;
+                               label = "vdd_gsc";
+                               gw,voltage-divider-ohms = <10000 10000>;
+                       };
+               };
+       };
+
+       gpio: gpio@23 {
+               compatible = "nxp,pca9555";
+               reg = <0x23>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gsc>;
+               interrupts = <4>;
+       };
+
+       pmic@4b {
+               compatible = "rohm,bd71847";
+               reg = <0x4b>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+               rohm,reset-snvs-powered;
+               #clock-cells = <0>;
+               clocks = <&osc_32k 0>;
+               clock-output-names = "clk-32k-out";
+
+               regulators {
+                       /* vdd_soc: 0.805-0.900V (typ=0.8V) */
+                       BUCK1 {
+                               regulator-name = "buck1";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               regulator-ramp-delay = <1250>;
+                       };
+
+                       /* vdd_arm: 0.805-1.0V (typ=0.9V) */
+                       buck2: BUCK2 {
+                               regulator-name = "buck2";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               regulator-ramp-delay = <1250>;
+                               rohm,dvs-run-voltage = <1000000>;
+                               rohm,dvs-idle-voltage = <900000>;
+                       };
+
+                       /* vdd_0p9: 0.805-1.0V (typ=0.9V) */
+                       BUCK3 {
+                               regulator-name = "buck3";
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_3p3 */
+                       BUCK4 {
+                               regulator-name = "buck4";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_1p8 */
+                       BUCK5 {
+                               regulator-name = "buck5";
+                               regulator-min-microvolt = <1605000>;
+                               regulator-max-microvolt = <1995000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_dram */
+                       BUCK6 {
+                               regulator-name = "buck6";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* nvcc_snvs_1p8 */
+                       LDO1 {
+                               regulator-name = "ldo1";
+                               regulator-min-microvolt = <1600000>;
+                               regulator-max-microvolt = <1900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdd_snvs_0p8 */
+                       LDO2 {
+                               regulator-name = "ldo2";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vdda_1p8 */
+                       LDO3 {
+                               regulator-name = "ldo3";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO4 {
+                               regulator-name = "ldo4";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO6 {
+                               regulator-name = "ldo6";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c02";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+
+       eeprom@51 {
+               compatible = "atmel,24c02";
+               reg = <0x51>;
+               pagesize = <16>;
+       };
+
+       eeprom@52 {
+               compatible = "atmel,24c02";
+               reg = <0x52>;
+               pagesize = <16>;
+       };
+
+       eeprom@53 {
+               compatible = "atmel,24c02";
+               reg = <0x53>;
+               pagesize = <16>;
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1672";
+               reg = <0x68>;
+       };
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       status = "okay";
+
+       accelerometer@19 {
+               compatible = "st,lis2de12";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_accel>;
+               reg = <0x19>;
+               st,drdy-int-pin = <1>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "INT1";
+       };
+};
+
+/* off-board header */
+&i2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+};
+
+/* off-board header */
+&i2c4 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       status = "okay";
+};
+
+/* off-board header */
+&sai3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <24576000>;
+       status = "okay";
+};
+
+/* RS232/RS485/RS422 selectable */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>, <&pinctrl_uart1_gpio>;
+       status = "okay";
+};
+
+/* RS232 console */
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+/* bluetooth HCI */
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>, <&pinctrl_uart3_gpio>;
+       rts-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
+       cts-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm4330-bt";
+               shutdown-gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* LTE Cat M1/NB1/EGPRS modem or GPS (loading option) */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb1_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
+/* SDIO WiFi */
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       bus-width = <4>;
+       non-removable;
+       vmmc-supply = <&reg_wifi>;
+       status = "okay";
+};
+
+/* eMMC */
+&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-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_CE0_B_GPIO3_IO1       0x40000159 /* M2_GDIS# */
+                       MX8MN_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x40000041 /* M2_RST# */
+                       MX8MN_IOMUXC_NAND_DATA01_GPIO3_IO7      0x40000119 /* M2_OFF# */
+                       MX8MN_IOMUXC_GPIO1_IO15_GPIO1_IO15      0x40000159 /* M2_WDIS# */
+                       MX8MN_IOMUXC_SAI2_RXFS_GPIO4_IO21       0x40000041 /* APP GPIO1 */
+                       MX8MN_IOMUXC_SAI2_MCLK_GPIO4_IO27       0x40000041 /* APP GPIO2 */
+                       MX8MN_IOMUXC_SD1_DATA6_GPIO2_IO8        0x40000041 /* UART2_EN# */
+                       MX8MN_IOMUXC_SAI3_RXFS_GPIO4_IO28       0x40000041 /* MIPI_GPIO1 */
+                       MX8MN_IOMUXC_SPDIF_EXT_CLK_GPIO5_IO5    0x40000041 /* MIPI_GPIO2 */
+                       MX8MN_IOMUXC_SPDIF_RX_GPIO5_IO4         0x40000041 /* MIPI_GPIO3/PWM2 */
+                       MX8MN_IOMUXC_SPDIF_TX_GPIO5_IO3         0x40000041 /* MIPI_GPIO4/PWM3 */
+               >;
+       };
+
+       pinctrl_accel: accelgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_GPIO1_IO12_GPIO1_IO12      0x159
+               >;
+       };
+
+       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_GPIO1_IO10_GPIO1_IO10              0x19 /* RST# */
+                       MX8MN_IOMUXC_GPIO1_IO11_GPIO1_IO11              0x19 /* IRQ# */
+                       MX8MN_IOMUXC_GPIO1_IO08_ENET1_1588_EVENT0_IN    0x141
+                       MX8MN_IOMUXC_GPIO1_IO09_ENET1_1588_EVENT0_OUT   0x141
+               >;
+       };
+
+       pinctrl_gsc: gscgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD1_DATA4_GPIO2_IO6        0x40
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_I2C1_SCL_I2C1_SCL          0x400001c3
+                       MX8MN_IOMUXC_I2C1_SDA_I2C1_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_I2C2_SCL_I2C2_SCL          0x400001c3
+                       MX8MN_IOMUXC_I2C2_SDA_I2C2_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_I2C3_SCL_I2C3_SCL          0x400001c3
+                       MX8MN_IOMUXC_I2C3_SDA_I2C3_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_I2C4_SCL_I2C4_SCL          0x400001c3
+                       MX8MN_IOMUXC_I2C4_SDA_I2C4_SDA          0x400001c3
+               >;
+       };
+
+       pinctrl_gpio_leds: gpioledgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SAI5_RXD0_GPIO3_IO21       0x19
+                       MX8MN_IOMUXC_SAI5_RXD2_GPIO3_IO23       0x19
+                       MX8MN_IOMUXC_SAI5_RXD1_GPIO3_IO22       0x19
+                       MX8MN_IOMUXC_SAI5_RXC_GPIO3_IO20        0x19
+                       MX8MN_IOMUXC_SAI5_MCLK_GPIO3_IO25       0x19
+               >;
+       };
+
+       pinctrl_pmic: pmicgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_DATA02_GPIO3_IO8      0x41
+               >;
+       };
+
+       pinctrl_pps: ppsgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SAI5_RXD3_GPIO3_IO24       0x141 /* PPS */
+               >;
+       };
+
+       pinctrl_reg_wl: regwlgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19     0x41 /* WLAN_WLON */
+               >;
+       };
+
+       pinctrl_reg_usb1: regusb1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD1_DATA5_GPIO2_IO7        0x41
+               >;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SAI3_MCLK_SAI3_MCLK        0xd6
+                       MX8MN_IOMUXC_SAI3_RXD_SAI3_RX_DATA0     0xd6
+                       MX8MN_IOMUXC_SAI3_TXC_SAI3_TX_BCLK      0xd6
+                       MX8MN_IOMUXC_SAI3_TXD_SAI3_TX_DATA0     0xd6
+                       MX8MN_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC     0xd6
+               >;
+       };
+
+       pinctrl_spi1: spi1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK    0x82
+                       MX8MN_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI    0x82
+                       MX8MN_IOMUXC_ECSPI1_MISO_ECSPI1_MISO    0x82
+                       MX8MN_IOMUXC_ECSPI1_SS0_GPIO5_IO9       0x40
+                       MX8MN_IOMUXC_SD1_DATA1_GPIO2_IO3        0x140 /* CAN_IRQ# */
+               >;
+       };
+
+       pinctrl_spi2: spi2grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK    0x82
+                       MX8MN_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI    0x82
+                       MX8MN_IOMUXC_ECSPI2_MISO_ECSPI2_MISO    0x82
+                       MX8MN_IOMUXC_ECSPI2_SS0_GPIO5_IO13      0x40 /* SS0 */
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_UART1_RXD_UART1_DCE_RX     0x140
+                       MX8MN_IOMUXC_UART1_TXD_UART1_DCE_TX     0x140
+               >;
+       };
+
+       pinctrl_uart1_gpio: uart1gpiogrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SAI2_TXD0_GPIO4_IO26       0x40000110 /* HALF */
+                       MX8MN_IOMUXC_SAI2_TXC_GPIO4_IO25        0x40000110 /* TERM */
+                       MX8MN_IOMUXC_SAI2_RXD0_GPIO4_IO23       0x40000110 /* RS485 */
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_UART2_RXD_UART2_DCE_RX     0x140
+                       MX8MN_IOMUXC_UART2_TXD_UART2_DCE_TX     0x140
+               >;
+       };
+
+       pinctrl_uart3_gpio: uart3_gpiogrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_SD2_CD_B_GPIO2_IO12        0x41 /* BT_EN# */
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_UART3_RXD_UART3_DCE_RX     0x140
+                       MX8MN_IOMUXC_UART3_TXD_UART3_DCE_TX     0x140
+                       MX8MN_IOMUXC_SD1_CLK_GPIO2_IO0          0x140 /* CTS */
+                       MX8MN_IOMUXC_SD1_CMD_GPIO2_IO1          0x140 /* RTS */
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_UART4_RXD_UART4_DCE_RX     0x140
+                       MX8MN_IOMUXC_UART4_TXD_UART4_DCE_TX     0x140
+                       MX8MN_IOMUXC_GPIO1_IO06_GPIO1_IO6       0x141 /* GNSS_GASP */
+               >;
+       };
+
+       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
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK       0x190
+                       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: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK       0x194
+                       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: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK       0x196
+                       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 e6de293..da6c942 100644 (file)
                compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_PPI 7
                             (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-               interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
        };
 
        psci {
                                clock-names = "usb1_ctrl_root_clk";
                                assigned-clocks = <&clk IMX8MN_CLK_USB_BUS>;
                                assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>;
-                               fsl,usbphy = <&usbphynop1>;
+                               phys = <&usbphynop1>;
                                fsl,usbmisc = <&usbmisc1 0>;
                                status = "disabled";
                        };
        };
 
        usbphynop1: usbphynop1 {
+               #phy-cells = <0>;
                compatible = "usb-nop-xceiv";
                clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
                assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
index f4eaab3..9b07b26 100644 (file)
                clock-output-names = "clk_ext4";
        };
 
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               dsp_reserved: dsp@92400000 {
+                       reg = <0 0x92400000 0 0x2000000>;
+                       no-map;
+               };
+       };
+
        pmu {
                compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_PPI 7
                             (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
-               interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
        };
 
        psci {
                                #mbox-cells = <2>;
                        };
 
+                       mu2: mailbox@30e60000 {
+                               compatible = "fsl,imx8mp-mu", "fsl,imx6sx-mu";
+                               reg = <0x30e60000 0x10000>;
+                               interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
                        i2c5: i2c@30ad0000 {
                                compatible = "fsl,imx8mp-i2c", "fsl,imx21-i2c";
                                #address-cells = <1>;
                                snps,dis-u2-freeclk-exists-quirk;
                        };
                };
+
+               dsp: dsp@3b6e8000 {
+                       compatible = "fsl,imx8mp-dsp";
+                       reg = <0x3b6e8000 0x88000>;
+                       mbox-names = "txdb0", "txdb1",
+                               "rxdb0", "rxdb1";
+                       mboxes = <&mu2 2 0>, <&mu2 2 1>,
+                               <&mu2 3 0>, <&mu2 3 1>;
+                       memory-region = <&dsp_reserved>;
+                       status = "disabled";
+               };
        };
 };
index 4d2035e..49f9db9 100644 (file)
        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-2 = <&pinctrl_usdhc2_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 = <&gpio2 12 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_usdhc2_vmmc>;
        status = "okay";
                fsl,pins = <
                        MX8MQ_IOMUXC_GPIO1_IO13_GPIO1_IO13              0x19
                >;
-
        };
 
        pinctrl_fec1: fec1grp {
                        MX8MQ_IOMUXC_NAND_DATA01_QSPI_A_DATA1   0x82
                        MX8MQ_IOMUXC_NAND_DATA02_QSPI_A_DATA2   0x82
                        MX8MQ_IOMUXC_NAND_DATA03_QSPI_A_DATA3   0x82
-
                >;
        };
 
                >;
        };
 
+       pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12                0x41
+               >;
+       };
+
        pinctrl_usdhc2: usdhc2grp {
                fsl,pins = <
                        MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x83
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts b/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dts
new file mode 100644 (file)
index 0000000..2535268
--- /dev/null
@@ -0,0 +1,213 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/*
+ * Copyright 2019-2021 MNT Research GmbH
+ * Copyright 2021 Lucas Stach <dev@lynxeye.de>
+ */
+
+/dts-v1/;
+
+#include "imx8mq-nitrogen-som.dtsi"
+
+/ {
+       model = "MNT Reform 2";
+       compatible = "mntre,reform2", "boundary,imx8mq-nitrogen8m-som", "fsl,imx8mq";
+
+       pcie1_refclk: clock-pcie1-refclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <100000000>;
+       };
+
+       reg_main_5v: regulator-main-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_main_3v3: regulator-main-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_main_usb: regulator-main-usb {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_PWR";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_main_5v>;
+       };
+
+       sound {
+               compatible = "fsl,imx-audio-wm8960";
+               audio-cpu = <&sai2>;
+               audio-codec = <&wm8960>;
+               audio-routing =
+                       "Headphone Jack", "HP_L",
+                       "Headphone Jack", "HP_R",
+                       "Ext Spk", "SPK_LP",
+                       "Ext Spk", "SPK_LN",
+                       "Ext Spk", "SPK_RP",
+                       "Ext Spk", "SPK_RN",
+                       "LINPUT1", "Mic Jack",
+                       "Mic Jack", "MICB",
+                       "LINPUT2", "Line In Jack",
+                       "RINPUT2", "Line In Jack";
+               model = "wm8960-audio";
+       };
+};
+
+&fec1 {
+       status = "okay";
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       status = "okay";
+
+       wm8960: codec@1a {
+               compatible = "wlf,wm8960";
+               reg = <0x1a>;
+               clocks = <&clk IMX8MQ_CLK_SAI2_ROOT>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+       };
+
+       rtc@68 {
+               compatible = "nxp,pcf8523";
+               reg = <0x68>;
+       };
+};
+
+&pcie1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie1>;
+       reset-gpio = <&gpio3 23 GPIO_ACTIVE_LOW>;
+       clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
+                <&clk IMX8MQ_CLK_PCIE2_AUX>,
+                <&clk IMX8MQ_CLK_PCIE2_PHY>,
+                <&pcie1_refclk>;
+       clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
+       status = "okay";
+};
+
+&reg_1p8v {
+       vin-supply = <&reg_main_5v>;
+};
+
+&reg_snvs {
+       vin-supply = <&reg_main_5v>;
+};
+
+&reg_arm_dram {
+       vin-supply = <&reg_main_5v>;
+};
+
+&reg_dram_1p1v {
+       vin-supply = <&reg_main_5v>;
+};
+
+&reg_soc_gpu_vpu {
+       vin-supply = <&reg_main_5v>;
+};
+
+&sai2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai2>;
+       assigned-clocks = <&clk IMX8MQ_CLK_SAI2>;
+       assigned-clock-parents = <&clk IMX8MQ_CLK_25M>;
+       assigned-clock-rates = <25000000>;
+       fsl,sai-mclk-direction-output;
+       fsl,sai-asynchronous;
+       status = "okay";
+};
+
+&snvs_rtc {
+       status = "disabled";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&usb3_phy0 {
+       vbus-supply = <&reg_main_usb>;
+       status = "okay";
+};
+
+&usb3_phy1 {
+       vbus-supply = <&reg_main_usb>;
+       status = "okay";
+};
+
+&usb_dwc3_0 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb_dwc3_1 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usdhc2 {
+       assigned-clocks = <&clk IMX8MQ_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       vqmmc-supply = <&reg_main_3v3>;
+       vmmc-supply = <&reg_main_3v3>;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL                  0x4000007f
+                       MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA                  0x4000007f
+               >;
+       };
+
+       pinctrl_pcie1: pcie1grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SAI5_RXD2_GPIO3_IO23               0x16
+               >;
+       };
+
+       pinctrl_sai2: sai2grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0            0xd6
+                       MX8MQ_IOMUXC_SAI2_RXFS_SAI2_RX_SYNC             0xd6
+                       MX8MQ_IOMUXC_SAI2_TXC_SAI2_TX_BCLK              0xd6
+                       MX8MQ_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC             0xd6
+                       MX8MQ_IOMUXC_SAI2_RXC_SAI2_RX_BCLK              0xd6
+                       MX8MQ_IOMUXC_SAI2_MCLK_SAI2_MCLK                0xd6
+                       MX8MQ_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0            0xd6
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX             0x45
+                       MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX             0x45
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK                 0x83
+                       MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD                 0xc3
+                       MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0             0xc3
+                       MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1             0xc3
+                       MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2             0xc3
+                       MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3             0xc3
+               >;
+       };
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mq-nitrogen-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mq-nitrogen-som.dtsi
new file mode 100644 (file)
index 0000000..36fc428
--- /dev/null
@@ -0,0 +1,275 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2018 Boundary Devices
+ * Copyright 2021 Lucas Stach <dev@lynxeye.de>
+ */
+
+#include "imx8mq.dtsi"
+
+/ {
+       model = "Boundary Devices i.MX8MQ Nitrogen8M";
+       compatible = "boundary,imx8mq-nitrogen8m-som", "fsl,imx8mq";
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       reg_1p8v: regulator-fixed-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       reg_snvs: regulator-fixed-snvs {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_SNVS";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&{/opp-table/opp-800000000} {
+       opp-microvolt = <1000000>;
+};
+
+&{/opp-table/opp-1000000000} {
+       opp-microvolt = <1000000>;
+};
+
+&A53_0 {
+       cpu-supply = <&reg_arm_dram>;
+};
+
+&A53_1 {
+       cpu-supply = <&reg_arm_dram>;
+};
+
+&A53_2 {
+       cpu-supply = <&reg_arm_dram>;
+};
+
+&A53_3 {
+       cpu-supply = <&reg_arm_dram>;
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy0>;
+       fsl,magic-packet;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@4 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <4>;
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       i2c-mux@70 {
+               compatible = "nxp,pca9546";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c1_pca9546>;
+               reg = <0x70>;
+               reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c1a: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       reg_arm_dram: regulator@60 {
+                               compatible = "fcs,fan53555";
+                               reg = <0x60>;
+                               regulator-name = "VDD_ARM_DRAM_1V";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+               };
+
+               i2c1b: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       reg_dram_1p1v: regulator@60 {
+                               compatible = "fcs,fan53555";
+                               reg = <0x60>;
+                               regulator-name = "NVCC_DRAM_1P1V";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-always-on;
+                       };
+               };
+
+               i2c1c: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       reg_soc_gpu_vpu: regulator@60 {
+                               compatible = "fcs,fan53555";
+                               reg = <0x60>;
+                               regulator-name = "VDD_SOC_GPU_VPU";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-always-on;
+                       };
+               };
+
+               i2c1d: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+&pgc_gpu {
+       power-supply = <&reg_soc_gpu_vpu>;
+};
+
+&pgc_vpu {
+       power-supply = <&reg_soc_gpu_vpu>;
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&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>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       vqmmc-supply = <&reg_1p8v>;
+       vmmc-supply = <&reg_snvs>;
+       bus-width = <8>;
+       non-removable;
+       no-mmc-hs400;
+       no-sdio;
+       no-sd;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC                 0x3
+                       MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO               0x23
+                       MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL     0x1f
+                       MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC           0x1f
+                       MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0           0x1f
+                       MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1           0x1f
+                       MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2           0x1f
+                       MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3           0x1f
+                       MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL     0x91
+                       MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC           0x91
+                       MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0           0x91
+                       MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1           0x91
+                       MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2           0x91
+                       MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3           0x91
+                       MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9               0x19
+                       MX8MQ_IOMUXC_GPIO1_IO11_GPIO1_IO11              0x59
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_I2C1_SCL_I2C1_SCL                  0x4000007f
+                       MX8MQ_IOMUXC_I2C1_SDA_I2C1_SDA                  0x4000007f
+               >;
+       };
+
+       pinctrl_i2c1_pca9546: i2c1-pca9546grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8               0x49
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX             0x45
+                       MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX             0x45
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK                 0x83
+                       MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD                 0xc3
+                       MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6             0xc3
+                       MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7             0xc3
+                       MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B         0xc1
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK                 0x8d
+                       MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD                 0xcd
+                       MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6             0xcd
+                       MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7             0xcd
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK                 0x9f
+                       MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD                 0xdf
+                       MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6             0xdf
+                       MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7             0xdf
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MQ_IOMUXC_GPIO1_IO02_WDOG1_WDOG_B            0xc6
+               >;
+       };
+};
index 91df9c5..4066b16 100644 (file)
                compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-parent = <&gic>;
-               interrupt-affinity = <&A53_0>, <&A53_1>, <&A53_2>, <&A53_3>;
        };
 
        psci {
                                status = "disabled";
                        };
 
+                       mipi_csi1: csi@30a70000 {
+                               compatible = "fsl,imx8mq-mipi-csi2";
+                               reg = <0x30a70000 0x1000>;
+                               clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
+                                  <&clk IMX8MQ_CLK_CSI1_ESC>,
+                                  <&clk IMX8MQ_CLK_CSI1_PHY_REF>;
+                               clock-names = "core", "esc", "ui";
+                               assigned-clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
+                                   <&clk IMX8MQ_CLK_CSI1_PHY_REF>,
+                                   <&clk IMX8MQ_CLK_CSI1_ESC>;
+                               assigned-clock-rates = <266000000>, <333000000>, <66000000>;
+                               assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
+                                       <&clk IMX8MQ_SYS2_PLL_1000M>,
+                                       <&clk IMX8MQ_SYS1_PLL_800M>;
+                               power-domains = <&pgc_mipi_csi1>;
+                               resets = <&src IMX8MQ_RESET_MIPI_CSI1_CORE_RESET>,
+                                        <&src IMX8MQ_RESET_MIPI_CSI1_PHY_REF_RESET>,
+                                        <&src IMX8MQ_RESET_MIPI_CSI1_ESC_RESET>;
+                               fsl,mipi-phy-gpr = <&iomuxc_gpr 0x88>;
+                               interconnects = <&noc IMX8MQ_ICM_CSI1 &noc IMX8MQ_ICS_DRAM>;
+                               interconnect-names = "dram";
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               csi1_mipi_ep: endpoint {
+                                                       remote-endpoint = <&csi1_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       csi1: csi@30a90000 {
+                               compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
+                               reg = <0x30a90000 0x10000>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk IMX8MQ_CLK_CSI1_ROOT>;
+                               clock-names = "mclk";
+                               status = "disabled";
+
+                               port {
+                                       csi1_ep: endpoint {
+                                               remote-endpoint = <&csi1_mipi_ep>;
+                                       };
+                               };
+                       };
+
+                       mipi_csi2: csi@30b60000 {
+                               compatible = "fsl,imx8mq-mipi-csi2";
+                               reg = <0x30b60000 0x1000>;
+                               clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
+                                  <&clk IMX8MQ_CLK_CSI2_ESC>,
+                                  <&clk IMX8MQ_CLK_CSI2_PHY_REF>;
+                               clock-names = "core", "esc", "ui";
+                               assigned-clocks = <&clk IMX8MQ_CLK_CSI2_CORE>,
+                                   <&clk IMX8MQ_CLK_CSI2_PHY_REF>,
+                                   <&clk IMX8MQ_CLK_CSI2_ESC>;
+                               assigned-clock-rates = <266000000>, <333000000>, <66000000>;
+                               assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
+                                       <&clk IMX8MQ_SYS2_PLL_1000M>,
+                                       <&clk IMX8MQ_SYS1_PLL_800M>;
+                               power-domains = <&pgc_mipi_csi2>;
+                               resets = <&src IMX8MQ_RESET_MIPI_CSI2_CORE_RESET>,
+                                        <&src IMX8MQ_RESET_MIPI_CSI2_PHY_REF_RESET>,
+                                        <&src IMX8MQ_RESET_MIPI_CSI2_ESC_RESET>;
+                               fsl,mipi-phy-gpr = <&iomuxc_gpr 0xa4>;
+                               interconnects = <&noc IMX8MQ_ICM_CSI2 &noc IMX8MQ_ICS_DRAM>;
+                               interconnect-names = "dram";
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               csi2_mipi_ep: endpoint {
+                                                       remote-endpoint = <&csi2_ep>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       csi2: csi@30b80000 {
+                               compatible = "fsl,imx8mq-csi", "fsl,imx7-csi";
+                               reg = <0x30b80000 0x10000>;
+                               interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk IMX8MQ_CLK_CSI2_ROOT>;
+                               clock-names = "mclk";
+                               status = "disabled";
+
+                               port {
+                                       csi2_ep: endpoint {
+                                               remote-endpoint = <&csi2_mipi_ep>;
+                                       };
+                               };
+                       };
+
                        mu: mailbox@30aa0000 {
                                compatible = "fsl,imx8mq-mu", "fsl,imx6sx-mu";
                                reg = <0x30aa0000 0x10000>;
diff --git a/arch/arm64/boot/dts/freescale/imx8qm-ss-img.dtsi b/arch/arm64/boot/dts/freescale/imx8qm-ss-img.dtsi
new file mode 100644 (file)
index 0000000..7764b41
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ */
+
+&jpegdec {
+       compatible = "nxp,imx8qm-jpgdec", "nxp,imx8qxp-jpgdec";
+};
+
+&jpegenc {
+       compatible = "nxp,imx8qm-jpgdec", "nxp,imx8qxp-jpgenc";
+};
index 12cd059..aebbe2b 100644 (file)
        };
 
        /* sorted in register address */
+       #include "imx8-ss-img.dtsi"
        #include "imx8-ss-dma.dtsi"
        #include "imx8-ss-conn.dtsi"
        #include "imx8-ss-lsio.dtsi"
 };
 
+#include "imx8qm-ss-img.dtsi"
 #include "imx8qm-ss-dma.dtsi"
 #include "imx8qm-ss-conn.dtsi"
 #include "imx8qm-ss-lsio.dtsi"
index 47bb688..7d00e17 100644 (file)
                fsl,pins = <
                        IMX8QXP_UART0_RX_ADMA_UART0_RX                          0X06000020
                        IMX8QXP_UART0_TX_ADMA_UART0_TX                          0X06000020
-                       IMX8QXP_FLEXCAN0_TX_ADMA_UART0_CTS_B                    0x06000020
+                       IMX8QXP_FLEXCAN0_TX_ADMA_UART0_CTS_B                    0x06000020
                        IMX8QXP_FLEXCAN0_RX_ADMA_UART0_RTS_B                    0x06000020
                >;
        };
diff --git a/arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi b/arch/arm64/boot/dts/freescale/imx8qxp-ss-img.dtsi
new file mode 100644 (file)
index 0000000..3a08731
--- /dev/null
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2021 NXP
+ *     Dong Aisheng <aisheng.dong@nxp.com>
+ */
+
+&jpegdec {
+       compatible = "nxp,imx8qxp-jpgdec";
+};
+
+&jpegenc {
+       compatible = "nxp,imx8qxp-jpgenc";
+};
index 1e6b499..617618e 100644 (file)
        };
 
        pmu {
-               compatible = "arm,armv8-pmuv3";
+               compatible = "arm,cortex-a35-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
        };
 
        };
 
        /* sorted in register address */
+       #include "imx8-ss-img.dtsi"
        #include "imx8-ss-adma.dtsi"
        #include "imx8-ss-conn.dtsi"
        #include "imx8-ss-ddr.dtsi"
        #include "imx8-ss-lsio.dtsi"
 };
 
+#include "imx8qxp-ss-img.dtsi"
 #include "imx8qxp-ss-adma.dtsi"
 #include "imx8qxp-ss-conn.dtsi"
 #include "imx8qxp-ss-lsio.dtsi"
index f1ec87c..2d5c1a3 100644 (file)
                              <0x0 0xf3f20000 0x0 0x40000>,
                              <0x0 0xf5000000 0x0 0x2000>;
                        reg-names = "dbi", "apb", "phy", "config";
-                       bus-range = <0x0  0x1>;
+                       bus-range = <0x0 0xff>;
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
index 34efe0f..c686a8d 100644 (file)
@@ -16,5 +16,10 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-mcbin-singleshot.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8040-puzzle-m801.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += armada-8080-db.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += cn9130-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9130-db-B.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += cn9131-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9131-db-B.dtb
 dtb-$(CONFIG_ARCH_MVEBU) += cn9132-db.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9132-db-B.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9130-crb-A.dtb
+dtb-$(CONFIG_ARCH_MVEBU) += cn9130-crb-B.dtb
index a05b1ab..04da07a 100644 (file)
        pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
        status = "okay";
        reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
+       /*
+        * U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
+        * contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
+        * 2 size cells and also expects that the second range starts at 16 MB offset. If these
+        * conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
+        * space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
+        * for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
+        * This bug is not present in U-Boot ports for other Armada 3700 devices and is fixed in
+        * U-Boot version 2021.07. See relevant U-Boot commits (the last one contains fix):
+        * https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
+        * https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
+        * https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
+        */
+       #address-cells = <3>;
+       #size-cells = <2>;
+       ranges = <0x81000000 0 0xe8000000   0 0xe8000000   0 0x01000000   /* Port 0 IO */
+                 0x82000000 0 0xe9000000   0 0xe9000000   0 0x07000000>; /* Port 0 MEM */
 
        /* enabled by U-Boot if PCIe module is present */
        status = "disabled";
index 5db81a4..9acc5d2 100644 (file)
                        #interrupt-cells = <1>;
                        msi-parent = <&pcie0>;
                        msi-controller;
-                       ranges = <0x82000000 0 0xe8000000   0 0xe8000000 0 0x1000000 /* Port 0 MEM */
-                                 0x81000000 0 0xe9000000   0 0xe9000000 0 0x10000>; /* Port 0 IO*/
+                       /*
+                        * The 128 MiB address range [0xe8000000-0xf0000000] is
+                        * dedicated for PCIe and can be assigned to 8 windows
+                        * with size a power of two. Use one 64 KiB window for
+                        * IO at the end and the remaining seven windows
+                        * (totaling 127 MiB) for MEM.
+                        */
+                       ranges = <0x82000000 0 0xe8000000   0 0xe8000000   0 0x07f00000   /* Port 0 MEM */
+                                 0x81000000 0 0xefff0000   0 0xefff0000   0 0x00010000>; /* Port 0 IO */
                        interrupt-map-mask = <0 0 0 7>;
                        interrupt-map = <0 0 0 1 &pcie_intc 0>,
                                        <0 0 0 2 &pcie_intc 1>,
index 51f3e29..cd326fe 100644 (file)
 &cp0_eth0 {
        status = "okay";
        /* Network PHY */
-       phy-mode = "10gbase-kr";
+       phy-mode = "10gbase-r";
        /* Generic PHY, providing serdes lanes */
        phys = <&cp0_comphy2 0>;
 
index 0ec0d56..8729c64 100644 (file)
@@ -20,7 +20,7 @@
                stdout-path = "serial0:115200n8";
        };
 
-       memory@00000000 {
+       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
        };
index e39e1ef..f2e8e0d 100644 (file)
 
 &cp0_eth0 {
        status = "okay";
-       phy-mode = "10gbase-kr";
+       phy-mode = "10gbase-r";
 
        fixed-link {
                speed = <10000>;
 
 &cp1_eth0 {
        status = "okay";
-       phy-mode = "10gbase-kr";
+       phy-mode = "10gbase-r";
 
        fixed-link {
                speed = <10000>;
diff --git a/arch/arm64/boot/dts/marvell/cn9130-crb-A.dts b/arch/arm64/boot/dts/marvell/cn9130-crb-A.dts
new file mode 100644 (file)
index 0000000..a7b6dfb
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ */
+
+#include "cn9130-crb.dtsi"
+
+/ {
+       model = "Marvell Armada CN9130-CRB-A";
+};
+
+&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>;
+       iommu-map =
+               <0x0   &smmu 0x480 0x20>,
+               <0x100 &smmu 0x4a0 0x20>,
+               <0x200 &smmu 0x4c0 0x20>;
+       iommu-map-mask = <0x031f>;
+};
+
+&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-crb-B.dts b/arch/arm64/boot/dts/marvell/cn9130-crb-B.dts
new file mode 100644 (file)
index 0000000..0904cb0
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ */
+
+#include "cn9130-crb.dtsi"
+
+/ {
+       model = "Marvell Armada CN9130-CRB-B";
+};
+
+&cp0_pcie0 {
+       status = "okay";
+       num-lanes = <1>;
+       num-viewport = <8>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp0_comphy0 0>;
+       iommu-map =
+               <0x0   &smmu 0x480 0x20>,
+               <0x100 &smmu 0x4a0 0x20>,
+               <0x200 &smmu 0x4c0 0x20>;
+       iommu-map-mask = <0x031f>;
+};
+
+&cp0_sata0 {
+       status = "okay";
+       sata-port@0 {
+               status = "okay";
+               /* Generic PHY, providing serdes lanes */
+               phys = <&cp0_comphy2 0>;
+       };
+};
+
+&cp0_usb3_0 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy0>;
+       phy-names = "usb";
+       phys = <&cp0_comphy1 0>;
+};
+
+&cp0_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy1>;
+       phy-names = "usb";
+       phys = <&cp0_comphy3 1>;
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9130-crb.dtsi b/arch/arm64/boot/dts/marvell/cn9130-crb.dtsi
new file mode 100644 (file)
index 0000000..505ae69
--- /dev/null
@@ -0,0 +1,222 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ */
+
+#include "cn9130.dtsi" /* include SoC device tree */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       aliases {
+               i2c0 = &cp0_i2c0;
+               ethernet0 = &cp0_eth0;
+               ethernet1 = &cp0_eth1;
+               ethernet2 = &cp0_eth2;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       ap0_reg_mmc_vccq: ap0_mmc_vccq@0 {
+               compatible = "regulator-gpio";
+               regulator-name = "ap0_mmc_vccq";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1
+                         3300000 0x0>;
+       };
+
+       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 8 GPIO_ACTIVE_HIGH>;
+       };
+
+       cp0_usb3_0_phy0: cp0_usb3_phy0 {
+               compatible = "usb-nop-xceiv";
+       };
+
+       cp0_usb3_0_phy1: cp0_usb3_phy1 {
+               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 = <&cp0_gpio2 18 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 = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+/* on-board eMMC U6 */
+&ap_sdhci0 {
+       pinctrl-names = "default";
+       bus-width = <8>;
+       status = "okay";
+       mmc-ddr-1_8v;
+       vqmmc-supply = <&ap0_reg_mmc_vccq>;
+};
+
+&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_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb {
+                       marvell,pins = "mpp55";
+                       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";
+               };
+       };
+};
+
+&cp0_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_i2c0_pins>;
+       status = "okay";
+       clock-frequency = <100000>;
+       expander0: mcp23x17@20 {
+               compatible = "microchip,mcp23017";
+               gpio-controller;
+               #gpio-cells = <2>;
+               reg = <0x20>;
+               status = "okay";
+       };
+};
+
+&cp0_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_i2c1_pins>;
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+
+&cp0_sdhci0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_sdhci_pins
+                    &cp0_sdhci_cd_pins_crb>;
+       bus-width = <4>;
+       cd-gpios = <&cp0_gpio2 23 GPIO_ACTIVE_HIGH>;
+       vqmmc-supply = <&cp0_reg_sd_vccq>;
+       vmmc-supply = <&cp0_reg_sd_vcc>;
+       status = "okay";
+};
+
+&cp0_spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cp0_spi0_pins>;
+       reg = <0x700680 0x50>,          /* control */
+             <0x2000000 0x1000000>;    /* CS0 */
+       status = "okay";
+
+       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";
+                               reg = <0x0 0x200000>;
+                       };
+
+                       partition@400000 {
+                               label = "Filesystem";
+                               reg = <0x200000 0xe00000>;
+                       };
+               };
+       };
+};
+
+&cp0_mdio {
+       status = "okay";
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+       };
+};
+
+&cp0_xmdio {
+       status = "okay";
+       nbaset_phy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c45";
+               reg = <0>;
+       };
+};
+
+&cp0_ethernet {
+       status = "okay";
+};
+
+&cp0_eth0 {
+       /* This port is connected to 88E6393X switch */
+       status = "okay";
+       phy-mode = "10gbase-r";
+       managed = "in-band-status";
+       phys = <&cp0_comphy4 0>;
+};
+
+&cp0_eth1 {
+       status = "okay";
+       phy = <&phy0>;
+       phy-mode = "rgmii-id";
+};
+
+&cp0_eth2 {
+       /* This port uses "2500base-t" phy-mode */
+       status = "disabled";
+       phy = <&nbaset_phy0>;
+       phys = <&cp0_comphy5 2>;
+};
+
diff --git a/arch/arm64/boot/dts/marvell/cn9130-db-B.dts b/arch/arm64/boot/dts/marvell/cn9130-db-B.dts
new file mode 100644 (file)
index 0000000..57e41ca
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ *
+ * Device tree for the CN9130-DB board (setup "B").
+ */
+
+#include "cn9130-db.dtsi"
+
+/ {
+       model = "Marvell Armada CN9130-DB setup B";
+};
+
+/* Setup B has NAND flash as a boot device, while regular setup uses SPI flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When NAND controller is enabled, SPI1 should be disabled.
+ */
+
+&cp0_nand_controller {
+       status = "okay";
+};
+
index 9758609..994f347 100644 (file)
  * Device tree for the CN9130-DB board.
  */
 
-#include "cn9130.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
+#include "cn9130-db.dtsi"
 
 / {
-       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>;
-       mmc-ddr-1_8v;
-       mmc-hs400-1_8v;
-       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 0xe00000>;
-                       };
-                       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>;
-       };
+       model = "Marvell Armada CN9130-DB setup A";
 };
 
-/* 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>;
-};
+/* Setup A has SPI1 flash as a boot device, while setup B uses NAND flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When SPI controller is enabled, NAND should be disabled.
+ */
 
-/* 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_utmi {
-       status = "okay";
-};
-
-&cp0_usb3_0 {
-       status = "okay";
-       usb-phy = <&cp0_usb3_0_phy0>;
-       phys = <&cp0_utmi0>;
-       phy-names = "utmi";
-       dr_mode = "host";
-};
-
-&cp0_usb3_1 {
-       status = "okay";
-       usb-phy = <&cp0_usb3_0_phy1>;
-       phys =  <&cp0_utmi1>;
-       phy-names = "utmi";
-       dr_mode = "host";
-};
diff --git a/arch/arm64/boot/dts/marvell/cn9130-db.dtsi b/arch/arm64/boot/dts/marvell/cn9130-db.dtsi
new file mode 100644 (file)
index 0000000..c00b69b
--- /dev/null
@@ -0,0 +1,410 @@
+// 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>
+
+/ {
+       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@0 {
+               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 = "okay";
+       phy-mode = "10gbase-r";
+       /* 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 {
+       status = "disabled";
+       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 0xe00000>;
+                       };
+                       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 = "disabled";
+       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_utmi {
+       status = "okay";
+};
+
+&cp0_usb3_0 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy0>;
+       phys = <&cp0_utmi0>;
+       phy-names = "utmi";
+       dr_mode = "host";
+};
+
+&cp0_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp0_usb3_0_phy1>;
+       phys =  <&cp0_utmi1>;
+       phy-names = "utmi";
+       dr_mode = "host";
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9131-db-B.dts b/arch/arm64/boot/dts/marvell/cn9131-db-B.dts
new file mode 100644 (file)
index 0000000..183b1ec
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ *
+ * Device tree for the CN9131-DB board (setup "B").
+ */
+
+#include "cn9131-db.dtsi"
+
+/ {
+       model = "Marvell Armada CN9131-DB setup B";
+};
+
+/* Setup B has NAND flash as a boot device, while regular setup uses SPI flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When NAND controller is enabled, SPI1 should be disabled.
+ */
+
+&cp0_nand_controller {
+       status = "okay";
+};
+
index ba2d4e1..a60fdee 100644 (file)
  * Device tree for the CN9131-DB board.
  */
 
-#include "cn9130-db.dts"
+#include "cn9131-db.dtsi"
 
 / {
-       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";
-       };
+       model = "Marvell Armada CN9131-DB setup A";
 };
 
-/*
- * Instantiate the first slave CP115
+/* Setup A has SPI1 flash as a boot device, while setup B uses NAND flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When SPI controller is enabled, NAND should be disabled.
  */
 
-#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_utmi {
+&cp0_spi1 {
        status = "okay";
 };
 
-&cp1_usb3_1 {
-       status = "okay";
-       usb-phy = <&cp1_usb3_0_phy0>;
-       /* Generic PHY, providing serdes lanes */
-       phys = <&cp1_comphy3 1>, <&cp1_utmi1>;
-       phy-names = "usb", "utmi";
-       dr_mode = "host";
-};
diff --git a/arch/arm64/boot/dts/marvell/cn9131-db.dtsi b/arch/arm64/boot/dts/marvell/cn9131-db.dtsi
new file mode 100644 (file)
index 0000000..f995b1b
--- /dev/null
@@ -0,0 +1,206 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ *
+ * Device tree for the CN9131-DB board.
+ */
+
+#include "cn9130-db.dtsi"
+
+/ {
+       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 = "okay";
+       phy-mode = "10gbase-r";
+       /* 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_utmi {
+       status = "okay";
+};
+
+&cp1_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp1_usb3_0_phy0>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp1_comphy3 1>, <&cp1_utmi1>;
+       phy-names = "usb", "utmi";
+       dr_mode = "host";
+};
diff --git a/arch/arm64/boot/dts/marvell/cn9132-db-B.dts b/arch/arm64/boot/dts/marvell/cn9132-db-B.dts
new file mode 100644 (file)
index 0000000..7137a6f
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2019 Marvell International Ltd.
+ *
+ * Device tree for the CN9132-DB board.
+ */
+
+#include "cn9132-db.dtsi"
+
+/ {
+       model = "Marvell Armada CN9132-DB setup B";
+};
+
+/* Setup B has NAND flash as a boot device, while regular setup uses SPI flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When NAND controller is enabled, SPI1 should be disabled.
+ */
+
+&cp0_nand_controller {
+       status = "okay";
+};
+
index 81fba02..1f2e637 100644 (file)
  * Device tree for the CN9132-DB board.
  */
 
-#include "cn9131-db.dts"
+#include "cn9132-db.dtsi"
 
 / {
-       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";
-       };
+       model = "Marvell Armada CN9132-DB setup A";
 };
 
-/*
- * Instantiate the second slave CP115
+/* Setup A has SPI1 flash as a boot device, while setup B uses NAND flash.
+ * Since CP0 SPI1 and CP0 NAND are sharing some pins, they cannot be activated
+ * simultaneously. When SPI controller is enabled, NAND should be disabled.
  */
 
-#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 {
+&cp0_spi1 {
        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_utmi {
-       status = "okay";
-};
-
-&cp2_usb3_0 {
-       status = "okay";
-       usb-phy = <&cp2_usb3_0_phy0>;
-       phys = <&cp2_utmi0>;
-       phy-names = "usb";
-       dr_mode = "host";
-};
-
-/* SLM-1521-V2, CON11 */
-&cp2_usb3_1 {
-       status = "okay";
-       usb-phy = <&cp2_usb3_0_phy1>;
-       /* Generic PHY, providing serdes lanes */
-       phys = <&cp2_comphy3 1>, <&cp2_utmi1>;
-       phy-names = "usb", "utmi";
-       dr_mode = "host";
-};
diff --git a/arch/arm64/boot/dts/marvell/cn9132-db.dtsi b/arch/arm64/boot/dts/marvell/cn9132-db.dtsi
new file mode 100644 (file)
index 0000000..3f1795f
--- /dev/null
@@ -0,0 +1,227 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ *
+ * Device tree for the CN9132-DB board.
+ */
+
+#include "cn9131-db.dtsi"
+
+/ {
+       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-r";
+       /* 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_utmi {
+       status = "okay";
+};
+
+&cp2_usb3_0 {
+       status = "okay";
+       usb-phy = <&cp2_usb3_0_phy0>;
+       phys = <&cp2_utmi0>;
+       phy-names = "usb";
+       dr_mode = "host";
+};
+
+/* SLM-1521-V2, CON11 */
+&cp2_usb3_1 {
+       status = "okay";
+       usb-phy = <&cp2_usb3_0_phy1>;
+       /* Generic PHY, providing serdes lanes */
+       phys = <&cp2_comphy3 1>, <&cp2_utmi1>;
+       phy-names = "usb", "utmi";
+       dr_mode = "host";
+};
index 21452c5..e666ebb 100644 (file)
 #include "mt8173.dtsi"
 
 / {
+       aliases {
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               mmc2 = &mmc3;
+       };
+
        memory@40000000 {
                device_type = "memory";
                reg = <0 0x40000000 0 0x80000000>;
        };
 };
 
+&mfg_async {
+       domain-supply = <&da9211_vgpu_reg>;
+};
+
 &cec {
        status = "okay";
 };
index f6a1738..4fa1e93 100644 (file)
        };
 };
 
+&mfg_async {
+       domain-supply = <&da9211_vgpu_reg>;
+};
+
 &cec {
        status = "okay";
 };
index 22f271b..d9e005a 100644 (file)
                                        reg = <MT8173_POWER_DOMAIN_USB>;
                                        #power-domain-cells = <0>;
                                };
-                               power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
+                               mfg_async: power-domain@MT8173_POWER_DOMAIN_MFG_ASYNC {
                                        reg = <MT8173_POWER_DOMAIN_MFG_ASYNC>;
                                        clocks = <&clk26m>;
                                        clock-names = "mfg";
index ae549d5..8e9cf36 100644 (file)
@@ -13,6 +13,8 @@
 / {
        aliases {
                serial0 = &uart0;
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
        };
 
        chosen {
index f90df64..dfb2fbf 100644 (file)
                        reg = <0 0x14016000 0 0x1000>;
                        interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_LOW>;
                        power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
+                       mediatek,gce-events = <CMDQ_EVENT_MUTEX_STREAM_DONE0>,
+                                             <CMDQ_EVENT_MUTEX_STREAM_DONE1>;
                };
 
                larb0: larb@14017000 {
index e13fb10..c80f7dc 100644 (file)
@@ -7,6 +7,7 @@ dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p3450-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-smaug.dtb
 dtb-$(CONFIG_ARCH_TEGRA_210_SOC) += tegra210-p2894-0050-a08.dtb
 dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p2771-0000.dtb
+dtb-$(CONFIG_ARCH_TEGRA_186_SOC) += tegra186-p3509-0000+p3636-0001.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p2972-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0000.dtb
 dtb-$(CONFIG_ARCH_TEGRA_194_SOC) += tegra194-p3509-0000+p3668-0001.dtb
index 9928a87..b0bcda8 100644 (file)
 
                cpu@0 {
                        device_type = "cpu";
-                       compatible = "nvidia,denver";
+                       compatible = "nvidia,tegra132-denver";
                        reg = <0>;
                };
 
                cpu@1 {
                        device_type = "cpu";
-                       compatible = "nvidia,denver";
+                       compatible = "nvidia,tegra132-denver";
                        reg = <1>;
                };
        };
diff --git a/arch/arm64/boot/dts/nvidia/tegra186-p3509-0000+p3636-0001.dts b/arch/arm64/boot/dts/nvidia/tegra186-p3509-0000+p3636-0001.dts
new file mode 100644 (file)
index 0000000..936b106
--- /dev/null
@@ -0,0 +1,718 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/mfd/max77620.h>
+
+#include "tegra186.dtsi"
+
+/ {
+       model = "NVIDIA Jetson TX2 NX Developer Kit";
+       compatible = "nvidia,p3509-0000+p3636-0001", "nvidia,tegra186";
+
+       aliases {
+               ethernet0 = "/ethernet@2490000";
+               i2c0 = "/bpmp/i2c";
+               i2c1 = "/i2c@3160000";
+               i2c2 = "/i2c@c240000";
+               i2c3 = "/i2c@3180000";
+               i2c4 = "/i2c@3190000";
+               i2c5 = "/i2c@31c0000";
+               i2c6 = "/i2c@c250000";
+               i2c7 = "/i2c@31e0000";
+               mmc0 = "/mmc@3460000";
+               serial0 = &uarta;
+       };
+
+       chosen {
+               bootargs = "earlycon console=ttyS0,115200n8";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x0 0x70000000>;
+       };
+
+       ethernet@2490000 {
+               status = "okay";
+
+               phy-reset-gpios = <&gpio_aon TEGRA186_AON_GPIO(AA, 6) GPIO_ACTIVE_LOW>;
+               phy-handle = <&phy>;
+               phy-mode = "rgmii-id";
+
+               mdio {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       phy: phy@0 {
+                               compatible = "ethernet-phy-ieee802.3-c22";
+                               reg = <0x0>;
+                               interrupt-parent = <&gpio_aon>;
+                               interrupts = <TEGRA186_AON_GPIO(AA, 7) IRQ_TYPE_LEVEL_LOW>;
+                               #phy-cells = <0>;
+                       };
+               };
+       };
+
+       memory-controller@2c00000 {
+               status = "okay";
+       };
+
+       timer@3010000 {
+               status = "okay";
+       };
+
+       serial@3100000 {
+               status = "okay";
+       };
+
+       i2c@3160000 {
+               status = "okay";
+       };
+
+       i2c@3180000 {
+               status = "okay";
+
+               power-monitor@40 {
+                       compatible = "ti,ina3221";
+                       reg = <0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       channel@0 {
+                               reg = <0>;
+                               label = "VDD_IN";
+                               shunt-resistor-micro-ohms = <5>;
+                       };
+
+                       channel@1 {
+                               reg = <1>;
+                               label = "VDD_CPU_GPU";
+                               shunt-resistor-micro-ohms = <5>;
+                       };
+
+                       channel@2 {
+                               reg = <2>;
+                               label = "VDD_SOC";
+                               shunt-resistor-micro-ohms = <>;
+                       };
+               };
+       };
+
+       ddc: i2c@3190000 {
+               status = "okay";
+       };
+
+       i2c@31c0000 {
+               status = "okay";
+       };
+
+       i2c@31e0000 {
+               status = "okay";
+       };
+
+       /* SDMMC4 (eMMC) */
+       mmc@3460000 {
+               status = "okay";
+               bus-width = <8>;
+               non-removable;
+
+               vqmmc-supply = <&vdd_1v8_ap>;
+               vmmc-supply = <&vdd_3v3_sys>;
+       };
+
+       hda@3510000 {
+               nvidia,model = "jetson-tx2-hda";
+               status = "okay";
+       };
+
+       padctl@3520000 {
+               status = "okay";
+
+               avdd-pll-erefeut-supply = <&vdd_1v8_pll>;
+               avdd-usb-supply = <&vdd_3v3_sys>;
+               vclamp-usb-supply = <&vdd_1v8>;
+               vddio-hsic-supply = <&gnd>;
+
+               pads {
+                       usb2 {
+                               status = "okay";
+
+                               lanes {
+                                       micro_b: usb2-0 {
+                                               nvidia,function = "xusb";
+                                               status = "okay";
+                                       };
+
+                                       usb2-1 {
+                                               nvidia,function = "xusb";
+                                               status = "okay";
+                                       };
+
+                                       usb2-2 {
+                                               nvidia,function = "xusb";
+                                               status = "okay";
+                                       };
+                               };
+                       };
+
+                       usb3 {
+                               status = "okay";
+
+                               lanes {
+                                       usb3-1 {
+                                               nvidia,function = "xusb";
+                                               status = "okay";
+                                       };
+                               };
+                       };
+               };
+
+               ports {
+                       usb2-0 {
+                               status = "okay";
+                               mode = "otg";
+                               vbus-supply = <&vdd_5v0_sys>;
+                               usb-role-switch;
+
+                               connector {
+                                       compatible = "gpio-usb-b-connector",
+                                                    "usb-b-connector";
+                                       label = "micro-USB";
+                                       type = "micro";
+                                       vbus-gpios = <&gpio
+                                                     TEGRA186_MAIN_GPIO(L, 4)
+                                                     GPIO_ACTIVE_LOW>;
+                                       id-gpios = <&pmic 0 GPIO_ACTIVE_HIGH>;
+                               };
+                       };
+
+                       usb2-1 {
+                               status = "okay";
+                               mode = "host";
+
+                               vbus-supply = <&vdd_5v0_sys>;
+                       };
+
+                       usb2-2 {
+                               status = "okay";
+                               mode = "host";
+
+                               vbus-supply = <&vdd_5v0_sys>;
+                       };
+
+                       usb3-1 {
+                               nvidia,usb2-companion = <1>;
+                               vbus-supply = <&vdd_5v0_sys>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       usb@3530000 {
+               status = "okay";
+
+               phys = <&{/padctl@3520000/pads/usb2/lanes/usb2-0}>,
+                      <&{/padctl@3520000/pads/usb2/lanes/usb2-1}>,
+                      <&{/padctl@3520000/pads/usb2/lanes/usb2-2}>,
+                      <&{/padctl@3520000/pads/usb3/lanes/usb3-1}>;
+               phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-1";
+       };
+
+       usb@3550000 {
+               status = "okay";
+
+               phys = <&micro_b>;
+               phy-names = "usb2-0";
+       };
+
+       hsp@3c00000 {
+               status = "okay";
+       };
+
+       i2c@c240000 {
+               status = "okay";
+       };
+
+       i2c@c250000 {
+               status = "okay";
+
+               /* module ID EEPROM */
+               eeprom@50 {
+                       compatible = "atmel,24c02";
+                       reg = <0x50>;
+
+                       label = "module";
+                       vcc-supply = <&vdd_1v8>;
+                       address-width = <8>;
+                       pagesize = <8>;
+                       size = <256>;
+                       read-only;
+               };
+
+               /* carrier board ID EEPROM */
+               eeprom@57 {
+                       compatible = "atmel,24c02";
+                       reg = <0x57>;
+
+                       label = "system";
+                       vcc-supply = <&vdd_1v8>;
+                       address-width = <8>;
+                       pagesize = <8>;
+                       size = <256>;
+                       read-only;
+               };
+       };
+
+       rtc@c2a0000 {
+               status = "okay";
+       };
+
+       pwm@c340000 {
+               status = "okay";
+       };
+
+       pmc@c360000 {
+               nvidia,invert-interrupt;
+       };
+
+       pcie@10003000 {
+               status = "okay";
+
+               dvdd-pex-supply = <&vdd_pex>;
+               hvdd-pex-pll-supply = <&vdd_1v8>;
+               hvdd-pex-supply = <&vdd_1v8>;
+               vddio-pexctl-aud-supply = <&vdd_1v8>;
+
+               pci@1,0 {
+                       nvidia,num-lanes = <2>;
+                       status = "okay";
+               };
+
+               pci@2,0 {
+                       nvidia,num-lanes = <1>;
+                       status = "disabled";
+               };
+
+               pci@3,0 {
+                       nvidia,num-lanes = <1>;
+                       status = "okay";
+               };
+       };
+
+       host1x@13e00000 {
+               status = "okay";
+
+               dpaux@15040000 {
+                       status = "okay";
+               };
+
+               display-hub@15200000 {
+                       status = "okay";
+               };
+
+               dsi@15300000 {
+                       status = "disabled";
+               };
+
+               /* DP */
+               sor@15540000 {
+                       status = "okay";
+
+                       avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>;
+                       vdd-hdmi-dp-pll-supply = <&vdd_1v8_ap>;
+
+                       nvidia,dpaux = <&dpaux>;
+               };
+
+               /* HDMI */
+               sor@15580000 {
+                       status = "okay";
+
+                       avdd-io-hdmi-dp-supply = <&vdd_hdmi_1v05>;
+                       vdd-hdmi-dp-pll-supply = <&vdd_1v8_ap>;
+                       hdmi-supply = <&vdd_hdmi>;
+
+                       nvidia,ddc-i2c-bus = <&ddc>;
+                       nvidia,hpd-gpio = <&gpio TEGRA186_MAIN_GPIO(P, 1)
+                                                GPIO_ACTIVE_LOW>;
+               };
+
+               dpaux@155c0000 {
+                       status = "okay";
+               };
+       };
+
+       gpu@17000000 {
+               status = "okay";
+       };
+
+       fan: fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm4 0 45334>;
+
+               cooling-levels = <0 64 128 255>;
+               #cooling-cells = <2>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               power {
+                       label = "Power";
+                       gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 0)
+                                          GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <10>;
+                       wakeup-event-action = <EV_ACT_ASSERTED>;
+                       wakeup-source;
+               };
+
+               volume-up {
+                       label = "Volume Up";
+                       gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 1)
+                                          GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <10>;
+               };
+
+               volume-down {
+                       label = "Volume Down";
+                       gpios = <&gpio_aon TEGRA186_AON_GPIO(FF, 2)
+                                          GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_KEY>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       debounce-interval = <10>;
+               };
+       };
+
+       cpus {
+               cpu@0 {
+                       enable-method = "psci";
+               };
+
+               cpu@1 {
+                       enable-method = "psci";
+               };
+
+               cpu@2 {
+                       enable-method = "psci";
+               };
+
+               cpu@3 {
+                       enable-method = "psci";
+               };
+
+               cpu@4 {
+                       enable-method = "psci";
+               };
+
+               cpu@5 {
+                       enable-method = "psci";
+               };
+       };
+
+       bpmp {
+               i2c {
+                       status = "okay";
+
+                       pmic: pmic@3c {
+                               compatible = "maxim,max77620";
+                               reg = <0x3c>;
+
+                               interrupt-parent = <&pmc>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+
+                               #gpio-cells = <2>;
+                               gpio-controller;
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&max77620_default>;
+
+                               max77620_default: pinmux {
+                                       gpio0 {
+                                               pins = "gpio0";
+                                               function = "gpio";
+                                       };
+
+                                       gpio1 {
+                                               pins = "gpio1";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
+                                       };
+
+                                       gpio2 {
+                                               pins = "gpio2";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
+                                       };
+
+                                       gpio3 {
+                                               pins = "gpio3";
+                                               function = "fps-out";
+                                               maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
+                                       };
+
+                                       gpio4 {
+                                               pins = "gpio4";
+                                               function = "32k-out1";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio5 {
+                                               pins = "gpio5";
+                                               function = "gpio";
+                                               drive-push-pull = <0>;
+                                       };
+
+                                       gpio6 {
+                                               pins = "gpio6";
+                                               function = "gpio";
+                                               drive-push-pull = <1>;
+                                       };
+
+                                       gpio7 {
+                                               pins = "gpio7";
+                                               function = "gpio";
+                                               drive-push-pull = <1>;
+                                       };
+                               };
+
+                               fps {
+                                       fps0 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+
+                                       fps1 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN1>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+
+                                       fps2 {
+                                               maxim,fps-event-source = <MAX77620_FPS_EVENT_SRC_EN0>;
+                                               maxim,shutdown-fps-time-period-us = <640>;
+                                       };
+                               };
+
+                               regulators {
+                                       in-sd0-supply = <&vdd_5v0_sys>;
+                                       in-sd1-supply = <&vdd_5v0_sys>;
+                                       in-sd2-supply = <&vdd_5v0_sys>;
+                                       in-sd3-supply = <&vdd_5v0_sys>;
+
+                                       in-ldo0-1-supply = <&vdd_5v0_sys>;
+                                       in-ldo2-supply = <&vdd_5v0_sys>;
+                                       in-ldo3-5-supply = <&vdd_5v0_sys>;
+                                       in-ldo4-6-supply = <&vdd_1v8>;
+                                       in-ldo7-8-supply = <&avdd_dsi_csi>;
+
+                                       sd0 {
+                                               regulator-name = "VDD_DDR_1V1_PMIC";
+                                               regulator-min-microvolt = <1100000>;
+                                               regulator-max-microvolt = <1100000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       avdd_dsi_csi: sd1 {
+                                               regulator-name = "AVDD_DSI_CSI_1V2";
+                                               regulator-min-microvolt = <1200000>;
+                                               regulator-max-microvolt = <1200000>;
+                                       };
+
+                                       vdd_1v8: sd2 {
+                                               regulator-name = "VDD_1V8";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       vdd_3v3_sys: sd3 {
+                                               regulator-name = "VDD_3V3_SYS";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       vdd_1v8_pll: ldo0 {
+                                               regulator-name = "VDD_1V8_AP_PLL";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <1800000>;
+                                       };
+
+                                       ldo2 {
+                                               regulator-name = "VDDIO_3V3_AOHV";
+                                               regulator-min-microvolt = <3300000>;
+                                               regulator-max-microvolt = <3300000>;
+                                               regulator-always-on;
+                                               regulator-boot-on;
+                                       };
+
+                                       vddio_sdmmc1: ldo3 {
+                                               regulator-name = "VDDIO_SDMMC1_AP";
+                                               regulator-min-microvolt = <1800000>;
+                                               regulator-max-microvolt = <3300000>;
+                                       };
+
+                                       ldo4 {
+                                               regulator-name = "VDD_RTC";
+                                               regulator-min-microvolt = <1000000>;
+                                               regulator-max-microvolt = <1000000>;
+                                       };
+
+                                       vddio_sdmmc3: ldo5 {
+                                               regulator-name = "VDDIO_SDMMC3_AP";
+                                               regulator-min-microvolt = <2800000>;
+                                               regulator-max-microvolt = <2800000>;
+                                       };
+
+                                       vdd_hdmi_1v05: ldo7 {
+                                               regulator-name = "VDD_HDMI_1V05";
+                                               regulator-min-microvolt = <1050000>;
+                                               regulator-max-microvolt = <1050000>;
+                                       };
+
+                                       vdd_pex: ldo8 {
+                                               regulator-name = "VDD_PEX_1V05";
+                                               regulator-min-microvolt = <1050000>;
+                                               regulator-max-microvolt = <1050000>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               status = "okay";
+               method = "smc";
+       };
+
+       gnd: regulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "GND";
+               regulator-min-microvolt = <0>;
+               regulator-max-microvolt = <0>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_5v0_sys: regulator@1 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V0_SYS";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vdd_1v8_ap: regulator@2 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_1V8_AP";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pmic 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vdd_1v8>;
+       };
+
+       vdd_hdmi: regulator@3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_5V0_HDMI_CON";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
+       thermal-zones {
+               cpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               cpu_trip_critical: critical {
+                                       temperature = <96500>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+
+                               cpu_trip_hot: hot {
+                                       temperature = <79000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               cpu_trip_active: active {
+                                       temperature = <62000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_passive: passive {
+                                       temperature = <45000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               cpu-critical {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               cpu-hot {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               cpu-active {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               cpu-passive {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+
+               gpu {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               gpu_alert0: critical {
+                                       temperature = <99000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               aux {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               aux_alert0: critical {
+                                       temperature = <90000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
index d02f6bf..e94f8ad 100644 (file)
                status = "disabled";
        };
 
+       pwm1: pwm@3280000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x3280000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM1>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM1>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm2: pwm@3290000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x3290000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM2>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM2>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm3: pwm@32a0000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x32a0000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM3>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM3>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm5: pwm@32c0000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x32c0000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM5>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM5>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm6: pwm@32d0000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x32d0000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM6>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM6>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm7: pwm@32e0000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x32e0000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM7>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM7>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
+       pwm8: pwm@32f0000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0x32f0000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM8>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM8>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
        sdmmc1: mmc@3400000 {
                compatible = "nvidia,tegra186-sdhci";
                reg = <0x0 0x03400000 0x0 0x10000>;
                         <&bpmp TEGRA186_CLK_XUSB_CORE_SS>,
                         <&bpmp TEGRA186_CLK_XUSB_FS>;
                clock-names = "dev", "ss", "ss_src", "fs_src";
+               interconnects = <&mc TEGRA186_MEMORY_CLIENT_XUSB_DEVR &emc>,
+                               <&mc TEGRA186_MEMORY_CLIENT_XUSB_DEVW &emc>;
+               interconnect-names = "dma-mem", "write";
                iommus = <&smmu TEGRA186_SID_XUSB_DEV>;
                power-domains = <&bpmp TEGRA186_POWER_DOMAIN_XUSBB>,
                                <&bpmp TEGRA186_POWER_DOMAIN_XUSBA>;
                #interrupt-cells = <2>;
        };
 
+       pwm4: pwm@c340000 {
+               compatible = "nvidia,tegra186-pwm";
+               reg = <0x0 0xc340000 0x0 0x10000>;
+               clocks = <&bpmp TEGRA186_CLK_PWM4>;
+               clock-names = "pwm";
+               resets = <&bpmp TEGRA186_RESET_PWM4>;
+               reset-names = "pwm";
+               status = "disabled";
+               #pwm-cells = <2>;
+       };
+
        pmc: pmc@c360000 {
                compatible = "nvidia,tegra186-pmc";
                reg = <0 0x0c360000 0 0x10000>,
index 7e7b0eb..c4058ee 100644 (file)
 
                                interrupt-parent = <&gpio>;
                                interrupts = <TEGRA194_MAIN_GPIO(H, 2)
-                                             IRQ_TYPE_LEVEL_LOW>;
+                                             IRQ_TYPE_EDGE_FALLING>;
                                vcc-supply = <&vdd_1v8ls>;
 
                                #thermal-sensor-cells = <1>;
index 5ba7a45..c8250a3 100644 (file)
        };
 
        pcie_ep@14160000 {
-               compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep";
+               compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX4A>;
                reg = <0x00 0x14160000 0x0 0x00020000>, /* appl registers (128K)      */
                      <0x00 0x36040000 0x0 0x00040000>, /* iATU_DMA reg space (256K)  */
        };
 
        pcie_ep@14180000 {
-               compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep";
+               compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>;
                reg = <0x00 0x14180000 0x0 0x00020000>, /* appl registers (128K)      */
                      <0x00 0x38040000 0x0 0x00040000>, /* iATU_DMA reg space (256K)  */
        };
 
        pcie_ep@141a0000 {
-               compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep";
+               compatible = "nvidia,tegra194-pcie-ep";
                power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>;
                reg = <0x00 0x141a0000 0x0 0x00020000>, /* appl registers (128K)      */
                      <0x00 0x3a040000 0x0 0x00040000>, /* iATU_DMA reg space (256K)  */
index 4f05970..7051650 100644 (file)
@@ -15,6 +15,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += msm8916-longcheer-l8910.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a3u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8916-samsung-a5u-eur.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8916-wingtech-wt88047.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-bullhead-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-msft-lumia-octagon-talkman.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8992-xiaomi-libra.dtb
@@ -26,6 +27,12 @@ dtb-$(CONFIG_ARCH_QCOM)      += msm8994-sony-xperia-kitakami-satsuki.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8994-sony-xperia-kitakami-sumire.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8994-sony-xperia-kitakami-suzuran.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8996-mtp.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-pmi8996-sony-xperia-tone-dora.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-pmi8996-sony-xperia-tone-kagura.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-pmi8996-sony-xperia-tone-keyaki.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-dora.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-kagura.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += msm8996-sony-xperia-tone-keyaki.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-asus-novago-tp370ql.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-hp-envy-x2.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += msm8998-lenovo-miix-630.dtb
@@ -60,6 +67,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += sc7180-trogdor-pompom-r3-lte.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-r1.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7180-trogdor-r1-lte.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc7280-idp.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sc7280-idp2.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm630-sony-xperia-ganges-kirin.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm630-sony-xperia-nile-discovery.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm630-sony-xperia-nile-pioneer.dtb
@@ -75,6 +83,7 @@ dtb-$(CONFIG_ARCH_QCOM)       += sdm845-oneplus-enchilada.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm845-oneplus-fajita.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm845-xiaomi-beryllium.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm850-lenovo-yoga-c630.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sm6125-sony-xperia-seine-pdx201.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-hdk.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-microsoft-surface-duo.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8150-mtp.dtb
index 6aef0c2..f8d8f3e 100644 (file)
 &funnel0 { status = "okay"; };
 &funnel1 { status = "okay"; };
 &replicator { status = "okay"; };
+&stm { status = "okay"; };
 &tpiu { status = "okay"; };
 
 &smd_rpm_regulators {
index 8c7a27e..a57c600 100644 (file)
        status = "okay";
 };
 
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_phy {
+       status = "okay";
+};
+
 &mdss {
        status = "okay";
 };
index 99cefe8..5aec183 100644 (file)
                nand-bus-width = <8>;
        };
 };
+
+&qusb_phy_1 {
+       status = "ok";
+};
+
+&usb2 {
+       status = "ok";
+};
index 9fa5b02..d2fe58e 100644 (file)
                #size-cells = <2>;
                ranges;
 
-               rpm_msg_ram: memory@0x60000 {
+               rpm_msg_ram: memory@60000 {
                        reg = <0x0 0x60000 0x0 0x6000>;
                        no-map;
                };
                        reg = <0x0 0x01905000 0x0 0x8000>;
                };
 
-               tcsr_q6: syscon@1945000 {
+               tcsr: syscon@1937000 {
                        compatible = "syscon";
-                       reg = <0x0 0x01945000 0x0 0xe000>;
+                       reg = <0x0 0x01937000 0x0 0x21000>;
                };
 
                blsp_dma: dma-controller@7884000 {
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pcie_phy: phy@84000 {
+                       compatible = "qcom,ipq6018-qmp-pcie-phy";
+                       reg = <0x0 0x84000 0x0 0x1bc>; /* Serdes PLL */
+                       status = "disabled";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       clocks = <&gcc GCC_PCIE0_AUX_CLK>,
+                               <&gcc GCC_PCIE0_AHB_CLK>;
+                       clock-names = "aux", "cfg_ahb";
+
+                       resets = <&gcc GCC_PCIE0_PHY_BCR>,
+                               <&gcc GCC_PCIE0PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "common";
+
+                       pcie_phy0: lane@84200 {
+                               reg = <0x0 0x84200 0x0 0x16c>, /* Serdes Tx */
+                                     <0x0 0x84400 0x0 0x200>, /* Serdes Rx */
+                                     <0x0 0x84800 0x0 0x4f4>; /* PCS: Lane0, COM, PCIE */
+                               #phy-cells = <0>;
+
+                               clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
+                               clock-names = "pipe0";
+                               clock-output-names = "gcc_pcie0_pipe_clk_src";
+                               #clock-cells = <0>;
+                       };
+               };
+
+               pcie0: pci@20000000 {
+                       compatible = "qcom,pcie-ipq6018";
+                       reg = <0x0 0x20000000 0x0 0xf1d>,
+                             <0x0 0x20000f20 0x0 0xa8>,
+                             <0x0 0x20001000 0x0 0x1000>,
+                             <0x0 0x80000 0x0 0x4000>,
+                             <0x0 0x20100000 0x0 0x1000>;
+                       reg-names = "dbi", "elbi", "atu", "parf", "config";
+
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       bus-range = <0x00 0xff>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       phys = <&pcie_phy0>;
+                       phy-names = "pciephy";
+
+                       ranges = <0x81000000 0 0x20200000 0 0x20200000
+                                 0 0x10000>, /* downstream I/O */
+                                <0x82000000 0 0x20220000 0 0x20220000
+                                 0 0xfde0000>; /* non-prefetchable memory */
+
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 75
+                                        IRQ_TYPE_LEVEL_HIGH>, /* int_a */
+                                       <0 0 0 2 &intc 0 78
+                                        IRQ_TYPE_LEVEL_HIGH>, /* int_b */
+                                       <0 0 0 3 &intc 0 79
+                                        IRQ_TYPE_LEVEL_HIGH>, /* int_c */
+                                       <0 0 0 4 &intc 0 83
+                                        IRQ_TYPE_LEVEL_HIGH>; /* int_d */
+
+                       clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
+                                <&gcc GCC_PCIE0_AXI_M_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
+                                <&gcc PCIE0_RCHNG_CLK>;
+                       clock-names = "iface",
+                                     "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng";
+
+                       resets = <&gcc GCC_PCIE0_PIPE_ARES>,
+                                <&gcc GCC_PCIE0_SLEEP_ARES>,
+                                <&gcc GCC_PCIE0_CORE_STICKY_ARES>,
+                                <&gcc GCC_PCIE0_AXI_MASTER_ARES>,
+                                <&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
+                                <&gcc GCC_PCIE0_AHB_ARES>,
+                                <&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
+                                <&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
+                       reset-names = "pipe",
+                                     "sleep",
+                                     "sticky",
+                                     "axi_m",
+                                     "axi_s",
+                                     "ahb",
+                                     "axi_m_sticky",
+                                     "axi_s_sticky";
+
+                       status = "disabled";
+               };
+
                watchdog@b017000 {
                        compatible = "qcom,kpss-wdt";
                        interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
                };
 
                q6v5_wcss: remoteproc@cd00000 {
-                       compatible = "qcom,ipq8074-wcss-pil";
+                       compatible = "qcom,ipq6018-wcss-pil";
                        reg = <0x0 0x0cd00000 0x0 0x4040>,
                              <0x0 0x004ab000 0x0 0x20>;
                        reg-names = "qdsp6",
                        clocks = <&gcc GCC_PRNG_AHB_CLK>;
                        clock-names = "prng";
 
-                       qcom,halt-regs = <&tcsr_q6 0xa000 0xd000 0x0>;
+                       qcom,halt-regs = <&tcsr 0x18000 0x1b000 0xe000>;
 
                        qcom,smem-states = <&wcss_smp2p_out 0>,
                                           <&wcss_smp2p_out 1>;
                        };
                };
 
+               qusb_phy_1: qusb@59000 {
+                       compatible = "qcom,ipq6018-qusb2-phy";
+                       reg = <0x0 0x059000 0x0 0x180>;
+                       #phy-cells = <0>;
+
+                       clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
+                                <&xo>;
+                       clock-names = "cfg_ahb", "ref";
+
+                       resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
+                       status = "disabled";
+               };
+
+               usb2: usb2@7000000 {
+                       compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
+                       reg = <0x0 0x070F8800 0x0 0x400>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       clocks = <&gcc GCC_USB1_MASTER_CLK>,
+                                <&gcc GCC_USB1_SLEEP_CLK>,
+                                <&gcc GCC_USB1_MOCK_UTMI_CLK>;
+                       clock-names = "master",
+                                     "sleep",
+                                     "mock_utmi";
+
+                       assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
+                                         <&gcc GCC_USB1_MOCK_UTMI_CLK>;
+                       assigned-clock-rates = <133330000>,
+                                              <24000000>;
+                       resets = <&gcc GCC_USB1_BCR>;
+                       status = "disabled";
+
+                       dwc_1: usb@7000000 {
+                              compatible = "snps,dwc3";
+                              reg = <0x0 0x7000000 0x0 0xcd00>;
+                              interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                              phys = <&qusb_phy_1>;
+                              phy-names = "usb2-phy";
+                              tx-fifo-resize;
+                              snps,is-utmi-l1-suspend;
+                              snps,hird-threshold = /bits/ 8 <0x0>;
+                              snps,dis_u2_susphy_quirk;
+                              snps,dis_u3_susphy_quirk;
+                              dr_mode = "host";
+                       };
+               };
+
        };
 
        wcss: wcss-smp2p {
index e8c37a1..cc08dc4 100644 (file)
@@ -20,7 +20,7 @@
                stdout-path = "serial0";
        };
 
-       memory {
+       memory@40000000 {
                device_type = "memory";
                reg = <0x0 0x40000000 0x0 0x20000000>;
        };
index f39bc10..a620ac0 100644 (file)
                method = "smc";
        };
 
+       firmware {
+               scm {
+                       compatible = "qcom,scm-ipq8074", "qcom,scm";
+               };
+       };
+
        soc: soc {
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                        status = "disabled";
                };
 
+               prng: rng@e3000 {
+                       compatible = "qcom,prng-ee";
+                       reg = <0x000e3000 0x1000>;
+                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
+                       clock-names = "core";
+                       status = "disabled";
+               };
+
+               cryptobam: dma@704000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x00704000 0x20000>;
+                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_CRYPTO_AHB_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <1>;
+                       qcom,controlled-remotely = <1>;
+                       status = "disabled";
+               };
+
+               crypto: crypto@73a000 {
+                       compatible = "qcom,crypto-v5.1";
+                       reg = <0x0073a000 0x6000>;
+                       clocks = <&gcc GCC_CRYPTO_AHB_CLK>,
+                                <&gcc GCC_CRYPTO_AXI_CLK>,
+                                <&gcc GCC_CRYPTO_CLK>;
+                       clock-names = "iface", "bus", "core";
+                       dmas = <&cryptobam 2>, <&cryptobam 3>;
+                       dma-names = "rx", "tx";
+                       status = "disabled";
+               };
+
                tlmm: pinctrl@1000000 {
                        compatible = "qcom,ipq8074-pinctrl";
                        reg = <0x01000000 0x300000>;
 
                pcie1: pci@10000000 {
                        compatible = "qcom,pcie-ipq8074";
-                       reg =  <0x10000000 0xf1d
-                               0x10000f20 0xa8
-                               0x00088000 0x2000
-                               0x10100000 0x1000>;
+                       reg =  <0x10000000 0xf1d>,
+                              <0x10000f20 0xa8>,
+                              <0x00088000 0x2000>,
+                              <0x10100000 0x1000>;
                        reg-names = "dbi", "elbi", "parf", "config";
                        device_type = "pci";
                        linux,pci-domain = <1>;
 
                pcie0: pci@20000000 {
                        compatible = "qcom,pcie-ipq8074";
-                       reg =  <0x20000000 0xf1d
-                               0x20000f20 0xa8
-                               0x00080000 0x2000
-                               0x20100000 0x1000>;
+                       reg = <0x20000000 0xf1d>,
+                             <0x20000f20 0xa8>,
+                             <0x00080000 0x2000>,
+                             <0x20100000 0x1000>;
                        reg-names = "dbi", "elbi", "parf", "config";
                        device_type = "pci";
                        linux,pci-domain = <0>;
index c3f8859..d66c155 100644 (file)
@@ -9,6 +9,5 @@
 
 / {
        model = "Qualcomm Technologies, Inc. MSM 8916 MTP";
-       compatible = "qcom,msm8916-mtp", "qcom,msm8916-mtp/1",
-                       "qcom,msm8916", "qcom,mtp";
+       compatible = "qcom,msm8916-mtp", "qcom,msm8916-mtp/1", "qcom,msm8916";
 };
diff --git a/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts b/arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts
new file mode 100644 (file)
index 0000000..4e20cc0
--- /dev/null
@@ -0,0 +1,313 @@
+// SPDX-License-Identifier: GPL-2.0-only
+// Copyright (C) 2020 Stephan Gerhold
+
+/dts-v1/;
+
+#include "msm8916-pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+       model = "Xiaomi Redmi 2 (Wingtech WT88047)";
+       compatible = "wingtech,wt88047", "qcom,msm8916";
+
+       aliases {
+               serial0 = &blsp1_uart2;
+       };
+
+       chosen {
+               stdout-path = "serial0";
+       };
+
+       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>;
+               };
+       };
+
+       usb_id: usb-id {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&msmgpio 110 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_id_default>;
+       };
+};
+
+&blsp_i2c2 {
+       status = "okay";
+
+       imu@68 {
+               compatible = "invensense,mpu6880";
+               reg = <0x68>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <115 IRQ_TYPE_EDGE_RISING>;
+
+               vdd-supply = <&pm8916_l17>;
+               vddio-supply = <&pm8916_l6>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&imu_default>;
+
+               mount-matrix = "1",  "0", "0",
+                              "0", "-1", "0",
+                              "0",  "0", "1";
+       };
+};
+
+&blsp_i2c5 {
+       status = "okay";
+
+       touchscreen@38 {
+               /* Likely some other model but works just fine with this one */
+               compatible = "edt,edt-ft5506";
+               reg = <0x38>;
+
+               interrupt-parent = <&msmgpio>;
+               interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
+
+               reset-gpios = <&msmgpio 12 GPIO_ACTIVE_LOW>;
+
+               vcc-supply = <&pm8916_l17>;
+               iovcc-supply = <&pm8916_l6>;
+
+               touchscreen-size-x = <720>;
+               touchscreen-size-y = <1280>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touchscreen_default>;
+       };
+};
+
+&blsp_i2c6 {
+       status = "okay";
+
+       led-controller@45 {
+               compatible = "awinic,aw2013";
+               reg = <0x45>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vcc-supply = <&pm8916_l16>;
+
+               led@0 {
+                       reg = <0>;
+                       led-max-microamp = <15000>;
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_RED>;
+               };
+
+               led@1 {
+                       reg = <1>;
+                       led-max-microamp = <15000>;
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+               };
+
+               led@2 {
+                       reg = <2>;
+                       led-max-microamp = <15000>;
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_BLUE>;
+               };
+       };
+};
+
+&blsp1_uart2 {
+       status = "okay";
+};
+
+&pm8916_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEDOWN>;
+};
+
+&pm8916_vib {
+       status = "okay";
+};
+
+&pronto {
+       status = "okay";
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
+       pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
+
+       non-removable;
+};
+
+&usb {
+       status = "okay";
+       extcon = <&usb_id>, <&usb_id>;
+};
+
+&usb_hs_phy {
+       extcon = <&usb_id>;
+};
+
+&smd_rpm_regulators {
+       vdd_l1_l2_l3-supply = <&pm8916_s3>;
+       vdd_l4_l5_l6-supply = <&pm8916_s4>;
+       vdd_l7-supply = <&pm8916_s4>;
+
+       s3 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1300000>;
+       };
+
+       s4 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2100000>;
+       };
+
+       l1 {
+               regulator-min-microvolt = <1225000>;
+               regulator-max-microvolt = <1225000>;
+       };
+
+       l2 {
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+       };
+
+       l4 {
+               regulator-min-microvolt = <2050000>;
+               regulator-max-microvolt = <2050000>;
+       };
+
+       l5 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l6 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l7 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       l8 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2900000>;
+       };
+
+       l9 {
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l10 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2800000>;
+       };
+
+       l11 {
+               regulator-min-microvolt = <2950000>;
+               regulator-max-microvolt = <2950000>;
+               regulator-allow-set-load;
+               regulator-system-load = <200000>;
+       };
+
+       l12 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <2950000>;
+       };
+
+       l13 {
+               regulator-min-microvolt = <3075000>;
+               regulator-max-microvolt = <3075000>;
+       };
+
+       l14 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l15 {
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l16 {
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       l17 {
+               regulator-min-microvolt = <2850000>;
+               regulator-max-microvolt = <2850000>;
+       };
+
+       l18 {
+               regulator-min-microvolt = <2700000>;
+               regulator-max-microvolt = <2700000>;
+       };
+};
+
+&msmgpio {
+       gpio_keys_default: gpio-keys-default {
+               pins = "gpio107";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       imu_default: imu-default {
+               pins = "gpio115";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       touchscreen_default: touchscreen-default {
+               pins = "gpio13";
+               function = "gpio";
+
+               drive-strength = <2>;
+               bias-pull-up;
+
+               reset {
+                       pins = "gpio12";
+                       function = "gpio";
+
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       usb_id_default: usb-id-default {
+               pins = "gpio110";
+               function = "gpio";
+
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+};
index 4f06c0a..3f85e34 100644 (file)
                                 <&rpmcc RPM_SMD_SNOC_A_CLK>;
                };
 
+               stm: stm@802000 {
+                       compatible = "arm,coresight-stm", "arm,primecell";
+                       reg = <0x00802000 0x1000>,
+                             <0x09280000 0x180000>;
+                       reg-names = "stm-base", "stm-stimulus-base";
+
+                       clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
+                       clock-names = "apb_pclk", "atclk";
+
+                       status = "disabled";
+
+                       out-ports {
+                               port {
+                                       stm_out: endpoint {
+                                               remote-endpoint = <&funnel0_in7>;
+                                       };
+                               };
+                       };
+               };
+
                /* System CTIs */
                /* CTI 0 - TMC connections */
                cti0: cti@810000 {
                                                remote-endpoint = <&funnel1_out>;
                                        };
                                };
+
+                               port@7 {
+                                       reg = <7>;
+                                       funnel0_in7: endpoint {
+                                               remote-endpoint = <&stm_out>;
+                                       };
+                               };
                        };
 
                        out-ports {
index f9f0b5a..986fe60 100644 (file)
        chosen { };
 
        clocks {
-               xo_board: xo_board {
+               xo_board: xo-board {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <19200000>;
+                       clock-output-names = "xo_board";
                };
 
-               sleep_clk: sleep_clk {
+               sleep_clk: sleep-clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <32768>;
+                       clock-output-names = "sleep_clk";
                };
        };
 
                        power-domains = <&gcc USB30_GDSC>;
                        qcom,select-utmi-as-pipe-clk;
 
-                       dwc3@f9200000 {
+                       usb@f9200000 {
                                compatible = "snps,dwc3";
                                reg = <0xf9200000 0xcc00>;
                                interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
index 1e1514e..ac43a91 100644 (file)
                };
        };
 };
+
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_phy {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-dora.dts b/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-dora.dts
new file mode 100644 (file)
index 0000000..b018693
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8996-sony-xperia-tone-dora.dts"
+#include "pmi8996.dtsi"
+
+/ {
+       model = "Sony Xperia X Performance (PMI8996)";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-kagura.dts b/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-kagura.dts
new file mode 100644 (file)
index 0000000..842ea3c
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8996-sony-xperia-tone-kagura.dts"
+#include "pmi8996.dtsi"
+
+/ {
+       model = "Sony Xperia XZ (PMI8996)";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-keyaki.dts b/arch/arm64/boot/dts/qcom/msm8996-pmi8996-sony-xperia-tone-keyaki.dts
new file mode 100644 (file)
index 0000000..b3f9062
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8996-sony-xperia-tone-keyaki.dts"
+#include "pmi8996.dtsi"
+
+/ {
+       model = "Sony Xperia XZs (PMI8996)";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dts b/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-dora.dts
new file mode 100644 (file)
index 0000000..b4cca54
--- /dev/null
@@ -0,0 +1,27 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8996-sony-xperia-tone.dtsi"
+
+/ {
+       model = "Sony Xperia X Performance";
+       compatible = "sony,dora-row", "qcom,msm8996";
+};
+
+/delete-node/ &tof_sensor;
+/delete-node/ &pm8994_l11;
+/delete-node/ &pm8994_l14;
+
+&usb_detect {
+       pins = "gpio24";
+};
+
+&usb3_id {
+       id-gpio = <&tlmm 24 GPIO_ACTIVE_LOW>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dts b/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-kagura.dts
new file mode 100644 (file)
index 0000000..be6ea85
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8996-sony-xperia-tone.dtsi"
+
+/ {
+       model = "Sony Xperia XZ";
+       compatible = "sony,kagura-row", "qcom,msm8996";
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dts b/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone-keyaki.dts
new file mode 100644 (file)
index 0000000..1eee7d0
--- /dev/null
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "msm8996-sony-xperia-tone.dtsi"
+
+/ {
+       model = "Sony Xperia XZs";
+       compatible = "sony,keyaki-row", "qcom,msm8996";
+};
+
+&pm8994_l19 {
+       regulator-min-microvolt = <2700000>;
+       regulator-max-microvolt = <2700000>;
+};
+
+&pm8994_l30 {
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+       regulator-pull-down;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone.dtsi b/arch/arm64/boot/dts/qcom/msm8996-sony-xperia-tone.dtsi
new file mode 100644 (file)
index 0000000..507396c
--- /dev/null
@@ -0,0 +1,956 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8996.dtsi"
+#include "pm8994.dtsi"
+#include "pmi8994.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+
+/delete-node/ &slpi_region;
+/delete-node/ &venus_region;
+/delete-node/ &zap_shader_region;
+
+/ {
+       qcom,msm-id = <246 0x30001>; /* MSM8996 V3.1 (Final) */
+       qcom,pmic-id = <0x20009 0x2000a 0 0>; /* PM8994 + PMI8994 */
+       qcom,board-id = <8 0>;
+
+       chosen {
+               /*
+                * Due to an unknown-for-a-few-years regression,
+                * SDHCI only works on MSM8996 in PIO (lame) mode.
+                */
+               bootargs = "sdhci.debug_quirks=0x40 sdhci.debug_quirks2=0x4 maxcpus=2";
+       };
+
+       reserved-memory {
+               ramoops@a7f00000 {
+                       compatible = "ramoops";
+                       reg = <0 0xa7f00000 0 0x100000>;
+                       record-size = <0x20000>;
+                       console-size = <0x40000>;
+                       ftrace-size = <0x20000>;
+                       pmsg-size = <0x20000>;
+                       ecc-size = <16>;
+               };
+
+               cont_splash_mem: memory@83401000 {
+                       reg = <0 0x83401000 0 0x23ff000>;
+                       no-map;
+               };
+
+               zap_shader_region: gpu@90400000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x90400000 0x0 0x2000>;
+                       no-map;
+               };
+
+               slpi_region: memory@90500000 {
+                       reg = <0 0x90500000 0 0xa00000>;
+                       no-map;
+               };
+
+               venus_region: memory@90f00000 {
+                       reg = <0 0x90f00000 0 0x500000>;
+                       no-map;
+               };
+       };
+
+       panel_tvdd: tvdd-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "panel_tvdd";
+               gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+               pinctrl-0 = <&tp_vddio_en>;
+               pinctrl-names = "default";
+       };
+
+       usb3_id: usb3-id {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_detect>;
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+               regulator-name = "vph_pwr";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       wlan_en: wlan-en-1-8v {
+               compatible = "regulator-fixed";
+               regulator-name = "wlan-en-regulator";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wl_reg_on>;
+
+               /* WLAN card specific delay */
+               startup-delay-us = <70000>;
+               enable-active-high;
+       };
+};
+
+&blsp1_i2c3 {
+       status = "okay";
+       clock-frequency = <355000>;
+
+       tof_sensor: vl53l0x@29 {
+               compatible = "st,vl53l0x";
+               reg = <0x29>;
+       };
+};
+
+&blsp1_uart2 {
+       status = "okay";
+};
+
+&blsp2_i2c5 {
+       status = "okay";
+       clock-frequency = <355000>;
+
+       /* FUSB301 USB-C controller */
+};
+
+&blsp2_i2c6 {
+       status = "okay";
+       clock-frequency = <355000>;
+
+       synaptics@2c {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x2c>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <125 IRQ_TYPE_EDGE_FALLING>;
+               vdd-supply = <&panel_tvdd>;
+
+               syna,reset-delay-ms = <220>;
+               syna,startup-delay-ms = <220>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               rmi4-f01@1 {
+                       reg = <0x1>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f11@11 {
+                       reg = <0x11>;
+                       syna,sensor-type = <1>;
+               };
+       };
+};
+
+&blsp2_uart2 {
+       status = "okay";
+};
+
+&camera0_mclk {
+       drive-strength = <2>;
+       output-low;
+};
+
+&camera0_pwdn {
+       drive-strength = <2>;
+       output-low;
+};
+
+&camera0_rst {
+       pins = "gpio30";
+       drive-strength = <2>;
+       output-low;
+};
+
+&camera2_mclk {
+       drive-strength = <2>;
+       output-low;
+};
+
+&camera2_rst {
+       drive-strength = <2>;
+       output-low;
+};
+
+&hsusb_phy1 {
+       status = "okay";
+
+       vdda-pll-supply = <&pm8994_l12>;
+       vdda-phy-dpdm-supply = <&pm8994_l24>;
+};
+
+&mmcc {
+       vdd-gfx-supply = <&vdd_gfx>;
+};
+
+&pcie0 {
+       status = "okay";
+       perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
+       wake-gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>;
+       vddpe-3v3-supply = <&wlan_en>;
+       vdda-supply = <&pm8994_l28>;
+};
+
+&pcie_phy {
+       status = "okay";
+
+       vdda-phy-supply = <&pm8994_l28>;
+       vdda-pll-supply = <&pm8994_l12>;
+};
+
+&pm8994_gpios {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pm8994_gpios_defaults>;
+       gpio-line-names =
+               "NC",
+               "VOL_DOWN_N",
+               "VOL_UP_N",
+               "SNAPSHOT_N",
+               "FOCUS_N",
+               "NC",
+               "NFC_VEN",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "EAR_EN",
+               "NC",
+               "PM_DIVCLK1",
+               "PMI_CLK",
+               "NC",
+               "WL_SLEEP_CLK",
+               "NC",
+               "PMIC_SPON",
+               "UIM_BATT_ALARM",
+               "PMK_SLEEP_CLK";
+
+       /*
+        * We don't yet know for sure which GPIOs are of our interest, but what
+        * we do know is that if a vendor sets the pins to a non-default state, there's
+        * probably a reason for it, and just to be on the safe side, we follow suit.
+        */
+       pm8994_gpios_defaults: pm8994-gpios-default-state {
+               pm8994-gpio1-nc {
+                       pins = "gpio1";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+               };
+
+               vol-down-n {
+                       pins = "gpio2";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-pull-up;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               vol-up-n {
+                       pins = "gpio3";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-pull-up;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               camera-snapshot-n {
+                       pins = "gpio4";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-pull-up;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               camera-focus-n {
+                       pins = "gpio5";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-pull-up;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pm8994-gpio6-nc {
+                       pins = "gpio6";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               nfc-download {
+                       pins = "gpio7";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       drive-push-pull;
+                       bias-disable;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pm8994-gpio8-nc {
+                       pins = "gpio8";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pm8994-gpio9-nc {
+                       pins = "gpio9";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-high;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               nfc-clock {
+                       pins = "gpio10";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       input-enable;
+                       drive-push-pull;
+                       bias-pull-down;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pm8994-gpio11-nc {
+                       pins = "gpio11";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pm8994-gpio12-nc {
+                       pins = "gpio12";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               ear-enable {
+                       pins = "gpio13";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-high;
+                       drive-push-pull;
+                       bias-disable;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pm8994-gpio14-nc {
+                       pins = "gpio14";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pm-divclk1-gpio {
+                       pins = "gpio15";
+                       function = "func1";
+                       output-high;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pmi-clk-gpio {
+                       pins = "gpio16";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+               };
+
+               pm8994-gpio17-nc {
+                       pins = "gpio17";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               rome-sleep {
+                       pins = "gpio18";
+                       function = PMIC_GPIO_FUNC_FUNC2;
+                       output-low;
+                       drive-push-pull;
+                       bias-disable;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pm8994-gpio19-nc {
+                       pins = "gpio19";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pm8994-gpio22-nc {
+                       pins = "gpio22";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+       };
+};
+
+&pm8994_mpps {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pm8994_mpps_defaults>;
+
+       gpio-line-names =
+               "SDC_UIM_VBIAS",
+               "LCD_ID_ADC",
+               "VREF_DACX",
+               "NC",
+               "FLASH_THERM",
+               "NC",
+               "NC",
+               "RF_ID";
+
+       pm8994_mpps_defaults: pm8994-mpps-default-state {
+               lcd-id_adc-mpp {
+                       pins = "mpp2";
+                       function = "analog";
+                       input-enable;
+                       qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH6>;
+               };
+
+               pm-mpp4-nc {
+                       pins = "mpp4";
+                       function = "digital";
+                       bias-high-impedance;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               flash-therm-mpp {
+                       pins = "mpp5";
+                       function = "analog";
+                       input-enable;
+                       qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
+               };
+
+               mpp6-nc {
+                       pins = "mpp6";
+                       function = "digital";
+                       bias-high-impedance;
+               };
+
+               rf-id-mpp {
+                       pins = "mpp8";
+                       function = "analog";
+                       input-enable;
+                       qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH8>;
+               };
+       };
+};
+
+&pm8994_resin {
+       status = "okay";
+       linux,code = <KEY_VOLUMEUP>;
+};
+
+&pmi8994_gpios {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmi8994_gpios_defaults>;
+
+       gpio-line-names =
+               "VIB_LDO_EN",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "NC",
+               "USB_SWITCH_SEL",
+               "NC";
+
+       pmi8994_gpios_defaults: pmi8994-gpios-default-state {
+               vib-ldo-en-gpio {
+                       pins = "gpio1";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-low;
+                       bias-disable;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pmi-gpio2-nc {
+                       pins = "gpio2";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pmi-gpio3-nc {
+                       pins = "gpio3";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       input-enable;
+                       bias-high-impedance;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_VPH>;
+               };
+
+               pmi-gpio4-nc {
+                       pins = "gpio4";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-high;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pmi-gpio5-nc {
+                       pins = "gpio5";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-high;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pmi-gpio6-nc {
+                       pins = "gpio6";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-high;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pmi-gpio7-nc {
+                       pins = "gpio7";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-high;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               pmi-gpio8-nc {
+                       pins = "gpio8";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+                       output-high;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+
+               usb-switch-sel {
+                       pins = "gpio9";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       drive-push-pull;
+               };
+
+               pmi-gpio10-nc {
+                       pins = "gpio10";
+                       function = PMIC_GPIO_FUNC_NORMAL;
+                       output-low;
+                       drive-push-pull;
+                       bias-disable;
+                       qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
+                       power-source = <PM8994_GPIO_S4>;
+               };
+       };
+};
+
+&pmi8994_spmi_regulators {
+       qcom,saw-reg = <&saw3>;
+
+       vdd_gfx:
+       pmi8994_s2: s2 {
+               /* Pinned to a high value for now to avoid random crashes. */
+               regulator-min-microvolt = <1015000>;
+               regulator-max-microvolt = <1015000>;
+               regulator-name = "vdd_gfx";
+               regulator-always-on;
+       };
+
+       pmi8994_s9: s9 {
+               qcom,saw-slave;
+       };
+
+       pmi8994_s10: s10 {
+               qcom,saw-slave;
+       };
+
+       pmi8994_s11: s11 {
+               qcom,saw-leader;
+               regulator-always-on;
+               regulator-min-microvolt = <470000>;
+               regulator-max-microvolt = <1140000>;
+       };
+};
+
+&pmi8994_wled {
+       status = "okay";
+       default-brightness = <512>;
+};
+
+&rpm_requests {
+       pm8994-regulators {
+               compatible = "qcom,rpm-pm8994-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+               vdd_s7-supply = <&vph_pwr>;
+               vdd_s8-supply = <&vph_pwr>;
+               vdd_s9-supply = <&vph_pwr>;
+               vdd_s10-supply = <&vph_pwr>;
+               vdd_s11-supply = <&vph_pwr>;
+               vdd_s12-supply = <&vph_pwr>;
+               vdd_l1-supply = <&pm8994_s3>;
+               vdd_l2_l26_l28-supply = <&pm8994_s3>;
+               vdd_l3_l11-supply = <&pm8994_s3>;
+               vdd_l4_l27_l31-supply = <&pm8994_s3>;
+               vdd_l5_l7-supply = <&pm8994_s5>;
+               vdd_l6_l12_l32-supply = <&pm8994_s5>;
+               vdd_l8_l16_l30-supply = <&vph_pwr>;
+               vdd_l14_l15-supply = <&pm8994_s5>;
+               vdd_l20_l21-supply = <&pm8994_s5>;
+               vdd_l25-supply = <&pm8994_s3>;
+               vdd_lvs1_2-supply = <&pm8994_s4>;
+
+               pm8994_s3: s3 {
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1300000>;
+               };
+
+               pm8994_s4: s4 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-system-load = <325000>;
+                       regulator-always-on;
+               };
+
+               pm8994_s5: s5 {
+                       regulator-min-microvolt = <2150000>;
+                       regulator-max-microvolt = <2150000>;
+               };
+
+               pm8994_s7: s7 {
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <800000>;
+               };
+
+               pm8994_l1: l1 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1000000>;
+               };
+
+               pm8994_l2: l2 {
+                       regulator-min-microvolt = <1250000>;
+                       regulator-max-microvolt = <1250000>;
+               };
+
+               pm8994_l3: l3 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+               };
+
+               pm8994_l4: l4 {
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+               };
+
+               /* L6 and L7 seem unused. */
+
+               pm8994_l8: l8 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8994_l9: l9 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8994_l10: l10 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8994_l11: l11 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+               };
+
+               pm8994_l12: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l13: l13 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-system-load = <22000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l14: l14 {
+                       regulator-min-microvolt = <1700000>;
+                       regulator-max-microvolt = <1900000>;
+               };
+
+               pm8994_l15: l15 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8994_l16: l16 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+
+               pm8994_l17: l17 {
+                       regulator-min-microvolt = <2200000>;
+                       regulator-max-microvolt = <2500000>;
+               };
+
+               pm8994_l18: l18 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               pm8994_l19: l19 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+
+               pm8994_l20: l20 {
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-system-load = <570000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l21: l21 {
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-system-load = <800000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l22: l22 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+               };
+
+               pm8994_l23: l23 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+
+               pm8994_l24: l24 {
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3075000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l25: l25 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l27: l27 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               pm8994_l28: l28 {
+                       regulator-min-microvolt = <925000>;
+                       regulator-max-microvolt = <925000>;
+                       regulator-allow-set-load;
+               };
+
+               pm8994_l29: l29 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <2700000>;
+               };
+
+               pm8994_l30: l30 { };
+
+               pm8994_l32: l32 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+       };
+};
+
+&sdhc1 {
+       /* eMMC doesn't seem to cooperate even in PIO mode.. */
+       status = "disabled";
+
+       vmmc-supply = <&pm8994_l20>;
+       vqmmc-supply = <&pm8994_s4>;
+       mmc-hs400-1_8v;
+       mmc-hs200-1_8v;
+};
+
+&sdhc2 {
+       status = "okay";
+
+       cd-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+       vmmc-supply = <&pm8994_l21>;
+       vqmmc-supply = <&pm8994_l13>;
+};
+
+&tlmm {
+       gpio-reserved-ranges = <0 4>;
+       pinctrl-0 = <&sw_service_gpio>;
+       pinctrl-names = "default";
+
+       disp_reset_n_gpio: disp-reset-n {
+               pins = "gpio8";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       mdp_vsync_p_gpio: mdp-vsync-p {
+               pins = "gpio10";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       sw_service_gpio: sw-service-gpio {
+               pins = "gpio16";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       usb_detect: usb-detect {
+               pins = "gpio25";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
+
+       uim_detect_en: uim-detect-en {
+               pins = "gpio29";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
+
+       tray_det_pin: tray-det {
+               pins = "gpio40";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tp_vddio_en: tp-vddio-en {
+               pins = "gpio50";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
+
+       lcd_vddio_en: lcd-vddio-en {
+               pins = "gpio51";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       wl_host_wake: wl-host-wake {
+               pins = "gpio79";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+               input-high;
+       };
+
+       wl_reg_on: wl-reg-on {
+               pins = "gpio84";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       ts_reset_n: ts-rst-n {
+               pins = "gpio89";
+               function = "gpio";
+               drive-strength = <2>;
+       };
+
+       touch_int_n: touch-int-n {
+               pins = "gpio125";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       touch_int_sleep: touch-int-sleep {
+               pins = "gpio125";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+};
+
+/*
+ * For reasons that are currently unknown (but probably related to fusb301), USB takes about
+ * 6 minutes to wake up (nothing interesting in kernel logs), but then it works as it should.
+ */
+&usb3 {
+       status = "okay";
+       qcom,select-utmi-as-pipe-clk;
+};
+
+&usb3_dwc3 {
+       extcon = <&usb3_id>;
+       dr_mode = "peripheral";
+       phys = <&hsusb_phy1>;
+       phy-names = "usb2-phy";
+       snps,hird-threshold = /bits/ 8 <0>;
+};
diff --git a/arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi b/arch/arm64/boot/dts/qcom/msm8996-v3.0.dtsi
new file mode 100644 (file)
index 0000000..5728583
--- /dev/null
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#include "msm8996.dtsi"
+
+/ {
+       qcom,msm-id = <246 0x30000>;
+};
+
+ /*
+  * This revision seems to have differ GPU CPR
+  * parameters, GPU frequencies and some differences
+  * when it comes to voltage delivery to.. once again
+  * the GPU. Funnily enough, it's simpler to make it an
+  * overlay on top of 3.1 (the final one) than vice versa.
+  * The differences will show here as more and more
+  * features get enabled upstream.
+  */
+
+gpu_opp_table_3_0: gpu-opp-table-30 {
+       compatible = "operating-points-v2";
+
+       opp-624000000 {
+               opp-hz = /bits/ 64 <624000000>;
+               opp-level = <7>;
+       };
+
+       opp-560000000 {
+               opp-hz = /bits/ 64 <560000000>;
+               opp-level = <6>;
+       };
+
+       opp-510000000 {
+               opp-hz = /bits/ 64 <510000000>;
+               opp-level = <5>;
+       };
+
+       opp-401800000 {
+               opp-hz = /bits/ 64 <401800000>;
+               opp-level = <4>;
+       };
+
+       opp-315000000 {
+               opp-hz = /bits/ 64 <315000000>;
+               opp-level = <3>;
+       };
+
+       opp-214000000 {
+               opp-hz = /bits/ 64 <214000000>;
+               opp-level = <3>;
+       };
+
+       opp-133000000 {
+               opp-hz = /bits/ 64 <133000000>;
+               opp-level = <3>;
+       };
+};
+
+&gpu {
+       operating-points-v2 = <&gpu_opp_table_3_0>;
+};
index 78c55ca..52df22a 100644 (file)
        chosen { };
 
        clocks {
-               xo_board: xo_board {
+               xo_board: xo-board {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <19200000>;
                        clock-output-names = "xo_board";
                };
 
-               sleep_clk: sleep_clk {
+               sleep_clk: sleep-clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <32764>;
                #hwlock-cells = <1>;
        };
 
-       memory {
+       memory@80000000 {
                device_type = "memory";
                /* We expect the bootloader to fill in the reg */
-               reg = <0 0 0 0>;
+               reg = <0x0 0x80000000 0x0 0x0>;
        };
 
        psci {
                                phy-names = "hdmi_phy";
                                #sound-dai-cells = <1>;
 
+                               status = "disabled";
+
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                         <&gcc GCC_HDMI_CLKREF_CLK>;
                                clock-names = "iface",
                                              "ref";
+
+                               status = "disabled";
                        };
                };
 
 
                        status = "disabled";
 
+                       #cooling-cells = <2>;
+
                        gpu_opp_table: opp-table {
                                compatible  ="operating-points-v2";
 
 
                        camera0_state_on:
                        camera_rear_default: camera-rear-default {
-                               mclk0 {
+                               camera0_mclk: mclk0 {
                                        pins = "gpio13";
                                        function = "cam_mclk";
                                        drive-strength = <16>;
                                        bias-disable;
                                };
 
-                               rst {
+                               camera0_rst: rst {
                                        pins = "gpio25";
                                        function = "gpio";
                                        drive-strength = <16>;
                                        bias-disable;
                                };
 
-                               pwdn {
+                               camera0_pwdn: pwdn {
                                        pins = "gpio26";
                                        function = "gpio";
                                        drive-strength = <16>;
 
                        camera2_state_on:
                        camera_front_default: camera-front-default {
-                               mclk2 {
+                               camera2_mclk: mclk2 {
                                        pins = "gpio15";
                                        function = "cam_mclk";
                                        drive-strength = <16>;
                                        bias-disable;
                                };
 
-                               rst {
+                               camera2_rst: rst {
                                        pins = "gpio23";
                                        function = "gpio";
                                        drive-strength = <16>;
                        power-domains = <&gcc USB30_GDSC>;
                        status = "disabled";
 
-                       dwc3@6a00000 {
+                       usb3_dwc3: dwc3@6a00000 {
                                compatible = "snps,dwc3";
                                reg = <0x06a00000 0xcc00>;
                                interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
                                gpu1_alert0: trip-point0 {
                                        temperature = <90000>;
                                        hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpu1_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
                        };
                };
                                gpu2_alert0: trip-point0 {
                                        temperature = <90000>;
                                        hysteresis = <2000>;
-                                       type = "hot";
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpu2_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
                        };
                };
index e9d3ce2..34039b5 100644 (file)
 
        chosen { };
 
-       memory {
+       memory@80000000 {
                device_type = "memory";
                /* We expect the bootloader to fill in the reg */
-               reg = <0 0 0 0>;
+               reg = <0x0 0x80000000 0x0 0x0>;
        };
 
        reserved-memory {
index 2e6a6f6..e847d72 100644 (file)
@@ -3,9 +3,35 @@
  * Copyright (c) 2020, Konrad Dybcio
  */
 
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/spmi/spmi.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       thermal-zones {
+               pm660 {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&pm660_temp>;
+
+                       trips {
+                               pm660_alert0: pm660-alert0 {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               pm660_crit: pm660-crit {
+                                       temperature = <125000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
 
 &spmi_bus {
 
 
                };
 
+               pm660_temp: temp-alarm@2400 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0x2400>;
+                       interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
+                       io-channels = <&pm660_adc ADC5_DIE_TEMP>;
+                       io-channel-names = "thermal";
+                       #thermal-sensor-cells = <0>;
+               };
+
+               pm660_adc: adc@3100 {
+                       compatible = "qcom,spmi-adc-rev2";
+                       reg = <0x3100>;
+                       interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       #io-channel-cells = <1>;
+
+                       ref_gnd: ref_gnd@0 {
+                               reg = <ADC5_REF_GND>;
+                               qcom,decimation = <1024>;
+                               qcom,pre-scaling = <1 1>;
+                       };
+
+                       vref_1p25: vref_1p25@1 {
+                               reg = <ADC5_1P25VREF>;
+                               qcom,decimation = <1024>;
+                               qcom,pre-scaling = <1 1>;
+                       };
+
+                       die_temp: die_temp@6 {
+                               reg = <ADC5_DIE_TEMP>;
+                               qcom,decimation = <1024>;
+                               qcom,pre-scaling = <1 1>;
+                       };
+
+                       xo_therm: xo_therm@4c {
+                               reg = <ADC5_XO_THERM_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       msm_therm: msm_therm@4d {
+                               reg = <ADC5_AMUX_THM1_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       emmc_therm: emmc_therm@4e {
+                               reg = <ADC5_AMUX_THM2_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       pa_therm0: thermistor0@4f {
+                               reg = <ADC5_AMUX_THM3_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       pa_therm1: thermistor1@50 {
+                               reg = <ADC5_AMUX_THM4_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       quiet_therm: quiet_therm@51 {
+                               reg = <ADC5_AMUX_THM5_100K_PU>;
+                               qcom,pre-scaling = <1 1>;
+                               qcom,decimation = <1024>;
+                               qcom,hw-settle-time = <200>;
+                               qcom,ratiometric;
+                       };
+
+                       vadc_vph_pwr: vph_pwr@83 {
+                               reg = <ADC5_VPH_PWR>;
+                               qcom,decimation = <1024>;
+                               qcom,pre-scaling = <1 3>;
+                       };
+
+                       vcoin: vcoin@83 {
+                               reg = <ADC5_VCOIN>;
+                               qcom,decimation = <1024>;
+                               qcom,pre-scaling = <1 3>;
+                       };
+               };
+
                pm660_gpios: gpios@c000 {
                        compatible = "qcom,pm660-gpio";
                        reg = <0xc000>;
                        #interrupt-cells = <2>;
                };
        };
+
+       pmic@1 {
+               compatible = "qcom,pm660", "qcom,spmi-pmic";
+               reg = <0x1 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pm660_spmi_regulators: pm660-regulators {
+                       compatible = "qcom,pm660-regulators";
+               };
+       };
 };
index edba6de..05086cb 100644 (file)
@@ -3,9 +3,35 @@
  * Copyright (c) 2020, Konrad Dybcio
  */
 
+#include <dt-bindings/iio/qcom,spmi-vadc.h>
 #include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/spmi/spmi.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       thermal-zones {
+               pm660l {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&pm660l_temp>;
+
+                       trips {
+                               pm660l_alert0: pm660l-alert0 {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               pm660l_crit: pm660l-crit {
+                                       temperature = <125000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+};
 
 &spmi_bus {
 
                #address-cells = <1>;
                #size-cells = <0>;
 
+               pm660l_temp: temp-alarm@2400 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0x2400>;
+                       interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
                pm660l_gpios: gpios@c000 {
                        compatible = "qcom,pm660l-gpio", "qcom,spmi-gpio";
                        reg = <0xc000>;
                reg = <0x3 SPMI_USID>;
                #address-cells = <1>;
                #size-cells = <0>;
+
+               pm660l_wled: leds@d800 {
+                       compatible = "qcom,pm660l-wled";
+                       reg = <0xd800 0xd900>;
+                       interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ovp";
+                       label = "backlight";
+
+                       qcom,switching-freq = <800>;
+                       qcom,ovp-millivolt = <29600>;
+                       qcom,current-boost-limit = <970>;
+                       qcom,current-limit-microamp = <20000>;
+                       qcom,num-strings = <2>;
+                       qcom,enabled-strings = <0 1>;
+
+                       status = "disabled";
+               };
+
+               pm660l_spmi_regulators: pm660l-regulators {
+                       compatible = "qcom,pm660l-regulators";
+               };
        };
 };
 
index 0abd1ab..532b79a 100644 (file)
@@ -9,7 +9,6 @@
                reg = <0x4 SPMI_USID>;
                #address-cells = <1>;
                #size-cells = <0>;
-               status = "disabled";
        };
 
        pm8004_lsid5: pmic@5 {
@@ -17,7 +16,6 @@
                reg = <0x5 SPMI_USID>;
                #address-cells = <1>;
                #size-cells = <0>;
-               status = "disabled";
 
                pm8004_spmi_regulators: regulators {
                        compatible = "qcom,pm8004-regulators";
index b21e56a..058cc51 100644 (file)
                        status = "disabled";
                };
 
+               pm8150b_vbus: dcdc@1100 {
+                       compatible = "qcom,pm8150b-vbus-reg";
+                       status = "disabled";
+                       reg = <0x1100>;
+               };
+
                pm8150b_temp: temp-alarm@2400 {
                        compatible = "qcom,spmi-temp-alarm";
                        reg = <0x2400>;
diff --git a/arch/arm64/boot/dts/qcom/pmi8996.dtsi b/arch/arm64/boot/dts/qcom/pmi8996.dtsi
new file mode 100644 (file)
index 0000000..31b4720
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+ /*
+  * PMI8996 is a slight modification of PMI8994 with
+  * some notable changes, like being the first PMIC
+  * whose the bootloader has to check to continue booting
+  * and a change to a LABIBB parameter.
+  */
+
+/ {
+       qcom,pmic-id = <0x20009 0x10013 0 0>;
+};
index 0da7a3b..5ae2ddc 100644 (file)
        status = "okay";
 };
 
-&tlmm {
-       gpio-reserved-ranges = <0 4>;
-};
-
 &uart2 {
        status = "okay";
 };
        vdda-pll-max-microamp = <18300>;
 };
 
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       dr_mode = "host";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb2phy_ac_en1_default>;
+};
 
 &usb_1_hsphy {
        status = "okay";
 };
 
 &usb_1_qmpphy {
+       status = "disabled";
+};
+
+&usb_2 {
        status = "okay";
-       vdda-phy-supply = <&vreg_l8c_1p2>;
-       vdda-pll-supply = <&vdda_usb_ss_dp_core_1>;
 };
 
-&usb_1 {
+&usb_2_dwc3 {
+       dr_mode = "host";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb2phy_ac_en2_default>;
+};
+
+&usb_2_hsphy {
        status = "okay";
+       vdda-pll-supply = <&vdd_usb_hs_core>;
+       vdda33-supply = <&vdda_usb_hs_3p1>;
+       vdda18-supply = <&vdda_usb_hs_1p8>;
 };
 
-&usb_1_dwc3 {
-       dr_mode = "peripheral";
+&usb_2_qmpphy {
+       status = "okay";
+       vdda-phy-supply = <&vreg_l8c_1p2>;
+       vdda-pll-supply = <&vdda_usb_ss_dp_core_1>;
+};
+
+&tlmm {
+       gpio-reserved-ranges = <0 4>;
+
+       usb2phy_ac_en1_default: usb2phy_ac_en1_default {
+               mux {
+                       pins = "gpio113";
+                       function = "usb2phy_ac";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
+
+       usb2phy_ac_en2_default: usb2phy_ac_en2_default {
+               mux {
+                       pins = "gpio123";
+                       function = "usb2phy_ac";
+                       bias-disable;
+                       drive-strength = <2>;
+               };
+       };
 };
index 6f9c071..a758e4d 100644 (file)
@@ -23,7 +23,7 @@ ap_h1_spi: &spi0 {};
        adau7002: audio-codec-1 {
                compatible = "adi,adau7002";
                IOVDD-supply = <&pp1800_l15a>;
-               wakeup-delay-ms = <15>;
+               wakeup-delay-ms = <80>;
                #sound-dai-cells = <0>;
        };
 
index 781625d..0f2b3c0 100644 (file)
                };
        };
 
-       max98357a: audio-codec-0 {
-               compatible = "maxim,max98357a";
+       max98360a: audio-codec-0 {
+               compatible = "maxim,max98360a";
                pinctrl-names = "default";
                pinctrl-0 = <&amp_en>;
                sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
                        "Headphone Jack", "HPOL",
                        "Headphone Jack", "HPOR";
 
+               #sound-dai-cells = <0>;
                #address-cells = <1>;
                #size-cells = <0>;
 
                        };
 
                        sound_multimedia1_codec: codec {
-                               sound-dai = <&max98357a>;
+                               sound-dai = <&max98360a>;
+                       };
+               };
+
+               dai-link@2 {
+                       link-name = "MultiMedia2";
+                       reg = <2>;
+                       cpu {
+                               sound-dai = <&lpass_cpu 2>;
+                       };
+
+                       codec {
+                               sound-dai = <&mdss_dp>;
                        };
                };
        };
@@ -768,6 +781,10 @@ hp_i2c: &i2c9 {
                reg = <MI2S_SECONDARY>;
                qcom,playback-sd-lines = <0>;
        };
+
+       hdmi-primary@0 {
+               reg = <LPASS_DP_RX>;
+       };
 };
 
 &mdp {
@@ -778,6 +795,15 @@ hp_i2c: &i2c9 {
        status = "okay";
 };
 
+&mdss_dp {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&dp_hot_plug_det>;
+       data-lanes = <0 1>;
+       vdda-1p2-supply = <&vdda_usb_ss_dp_1p2>;
+       vdda-0p9-supply = <&vdda_usb_ss_dp_core>;
+};
+
 &pm6150_adc {
        charger-thermistor@4f {
                reg = <ADC5_AMUX_THM3_100K_PU>;
index e7f0e5c..c8921e2 100644 (file)
                        no-map;
                };
 
+               ipa_fw_mem: memory@8b700000 {
+                       reg = <0 0x8b700000 0 0x10000>;
+                       no-map;
+               };
+
                rmtfs_mem: memory@94600000 {
                        compatible = "qcom,rmtfs-mem";
                        reg = <0x0 0x94600000 0x0 0x200000>;
 
                qfprom: efuse@784000 {
                        compatible = "qcom,sc7180-qfprom", "qcom,qfprom";
-                       reg = <0 0x00784000 0 0x8ff>,
+                       reg = <0 0x00784000 0 0x7a0>,
                              <0 0x00780000 0 0x7a0>,
                              <0 0x00782000 0 0x100>,
                              <0 0x00786000 0 0x1fff>;
                                                        remote-endpoint = <&dsi0_in>;
                                                };
                                        };
+
+                                       port@2 {
+                                               reg = <2>;
+                                               dpu_intf0_out: endpoint {
+                                                       remote-endpoint = <&dp_in>;
+                                               };
+                                       };
                                };
 
                                mdp_opp_table: mdp-opp-table {
                                              "iface",
                                              "bus";
 
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>;
+
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SC7180_CX>;
 
 
                                status = "disabled";
                        };
+
+                       mdss_dp: displayport-controller@ae90000 {
+                               compatible = "qcom,sc7180-dp";
+                               status = "disabled";
+
+                               reg = <0 0x0ae90000 0 0x1400>;
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <12>;
+
+                               clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
+                               clock-names = "core_iface", "core_aux", "ctrl_link",
+                                             "ctrl_link_iface", "stream_pixel";
+                               #clock-cells = <1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
+                               assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
+                               phys = <&dp_phy>;
+                               phy-names = "dp";
+
+                               operating-points-v2 = <&dp_opp_table>;
+                               power-domains = <&rpmhpd SC7180_CX>;
+
+                               #sound-dai-cells = <0>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       port@0 {
+                                               reg = <0>;
+                                               dp_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf0_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               dp_out: endpoint { };
+                                       };
+                               };
+
+                               dp_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       opp-160000000 {
+                                               opp-hz = /bits/ 64 <160000000>;
+                                               required-opps = <&rpmhpd_opp_low_svs>;
+                                       };
+
+                                       opp-270000000 {
+                                               opp-hz = /bits/ 64 <270000000>;
+                                               required-opps = <&rpmhpd_opp_svs>;
+                                       };
+
+                                       opp-540000000 {
+                                               opp-hz = /bits/ 64 <540000000>;
+                                               required-opps = <&rpmhpd_opp_svs_l1>;
+                                       };
+
+                                       opp-810000000 {
+                                               opp-hz = /bits/ 64 <810000000>;
+                                               required-opps = <&rpmhpd_opp_nom>;
+                                       };
+                               };
+                       };
                };
 
                dispcc: clock-controller@af00000 {
                        #power-domain-cells = <1>;
                };
 
-               lpass_cpu: lpass@62f00000 {
+               lpass_cpu: lpass@62d87000 {
                        compatible = "qcom,sc7180-lpass-cpu";
 
-                       reg = <0 0x62f00000 0 0x29000>;
-                       reg-names = "lpass-lpaif";
+                       reg = <0 0x62d87000 0 0x68000>, <0 0x62f00000 0 0x29000>;
+                       reg-names =  "lpass-hdmiif", "lpass-lpaif";
 
                        iommus = <&apps_smmu 0x1020 0>,
-                               <&apps_smmu 0x1021 0>;
+                               <&apps_smmu 0x1021 0>,
+                               <&apps_smmu 0x1032 0>;
 
                        power-domains = <&lpass_hm LPASS_CORE_HM_GDSCR>;
 
+                       status = "disabled";
+
                        clocks = <&gcc GCC_LPASS_CFG_NOC_SWAY_CLK>,
                                 <&lpasscc LPASS_AUDIO_CORE_CORE_CLK>,
                                 <&lpasscc LPASS_AUDIO_CORE_EXT_MCLK0_CLK>,
                        #address-cells = <1>;
                        #size-cells = <0>;
 
-                       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "lpass-irq-lpaif";
+                       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "lpass-irq-lpaif", "lpass-irq-hdmi";
                };
 
                lpass_hm: clock-controller@63000000 {
index 44326d8..64fc22a 100644 (file)
@@ -8,17 +8,11 @@
 /dts-v1/;
 
 #include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
-#include <dt-bindings/iio/qcom,spmi-adc7-pmr735b.h>
-#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
-#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
-#include "sc7280.dtsi"
-#include "pm7325.dtsi"
+#include "sc7280-idp.dtsi"
 #include "pmr735a.dtsi"
-#include "pm8350c.dtsi"
-#include "pmk8350.dtsi"
 
 / {
-       model = "Qualcomm Technologies, Inc. sc7280 IDP platform";
+       model = "Qualcomm Technologies, Inc. sc7280 IDP SKU1 platform";
        compatible = "qcom,sc7280-idp", "google,senor", "qcom,sc7280";
 
        aliases {
 };
 
 &apps_rsc {
-       pm7325-regulators {
-               compatible = "qcom,pm7325-rpmh-regulators";
-               qcom,pmic-id = "b";
-
-               vreg_s1b_1p8: smps1 {
-                       regulator-min-microvolt = <1856000>;
-                       regulator-max-microvolt = <2040000>;
-               };
-
-               vreg_s7b_0p9: smps7 {
-                       regulator-min-microvolt = <535000>;
-                       regulator-max-microvolt = <1120000>;
-               };
-
-               vreg_s8b_1p2: smps8 {
-                       regulator-min-microvolt = <1256000>;
-                       regulator-max-microvolt = <1500000>;
-               };
-
-               vreg_l1b_0p8: ldo1 {
-                       regulator-min-microvolt = <825000>;
-                       regulator-max-microvolt = <925000>;
-               };
-
-               vreg_l2b_3p0: ldo2 {
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <3544000>;
-               };
-
-               vreg_l6b_1p2: ldo6 {
-                       regulator-min-microvolt = <1140000>;
-                       regulator-max-microvolt = <1260000>;
-               };
-
-               vreg_l7b_2p9: ldo7 {
-                       regulator-min-microvolt = <2960000>;
-                       regulator-max-microvolt = <2960000>;
-               };
-
-               vreg_l8b_0p9: ldo8 {
-                       regulator-min-microvolt = <870000>;
-                       regulator-max-microvolt = <970000>;
-               };
-
-               vreg_l9b_1p2: ldo9 {
-                       regulator-min-microvolt = <1080000>;
-                       regulator-max-microvolt = <1304000>;
-               };
-
-               vreg_l11b_1p7: ldo11 {
-                       regulator-min-microvolt = <1504000>;
-                       regulator-max-microvolt = <2000000>;
-               };
-
-               vreg_l12b_0p8: ldo12 {
-                       regulator-min-microvolt = <751000>;
-                       regulator-max-microvolt = <824000>;
-               };
-
-               vreg_l13b_0p8: ldo13 {
-                       regulator-min-microvolt = <530000>;
-                       regulator-max-microvolt = <824000>;
-               };
-
-               vreg_l14b_1p2: ldo14 {
-                       regulator-min-microvolt = <1080000>;
-                       regulator-max-microvolt = <1304000>;
-               };
-
-               vreg_l15b_0p8: ldo15 {
-                       regulator-min-microvolt = <765000>;
-                       regulator-max-microvolt = <1020000>;
-               };
-
-               vreg_l16b_1p2: ldo16 {
-                       regulator-min-microvolt = <1100000>;
-                       regulator-max-microvolt = <1300000>;
-               };
-
-               vreg_l17b_1p8: ldo17 {
-                       regulator-min-microvolt = <1700000>;
-                       regulator-max-microvolt = <1900000>;
-               };
-
-               vreg_l18b_1p8: ldo18 {
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2000000>;
-               };
-
-               vreg_l19b_1p8: ldo19 {
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-               };
-       };
-
-       pm8350c-regulators {
-               compatible = "qcom,pm8350c-rpmh-regulators";
-               qcom,pmic-id = "c";
-
-               vreg_s1c_2p2: smps1 {
-                       regulator-min-microvolt = <2190000>;
-                       regulator-max-microvolt = <2210000>;
-               };
-
-               vreg_s9c_1p0: smps9 {
-                       regulator-min-microvolt = <1010000>;
-                       regulator-max-microvolt = <1170000>;
-               };
-
-               vreg_l1c_1p8: ldo1 {
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1980000>;
-               };
-
-               vreg_l2c_1p8: ldo2 {
-                       regulator-min-microvolt = <1620000>;
-                       regulator-max-microvolt = <1980000>;
-               };
-
-               vreg_l3c_3p0: ldo3 {
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <3540000>;
-               };
-
-               vreg_l4c_1p8: ldo4 {
-                       regulator-min-microvolt = <1620000>;
-                       regulator-max-microvolt = <3300000>;
-               };
-
-               vreg_l5c_1p8: ldo5 {
-                       regulator-min-microvolt = <1620000>;
-                       regulator-max-microvolt = <3300000>;
-               };
-
-               vreg_l6c_2p9: ldo6 {
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2950000>;
-               };
-
-               vreg_l7c_3p0: ldo7 {
-                       regulator-min-microvolt = <3000000>;
-                       regulator-max-microvolt = <3544000>;
-               };
-
-               vreg_l8c_1p8: ldo8 {
-                       regulator-min-microvolt = <1620000>;
-                       regulator-max-microvolt = <2000000>;
-               };
-
-               vreg_l9c_2p9: ldo9 {
-                       regulator-min-microvolt = <2960000>;
-                       regulator-max-microvolt = <2960000>;
-               };
-
-               vreg_l10c_0p8: ldo10 {
-                       regulator-min-microvolt = <720000>;
-                       regulator-max-microvolt = <1050000>;
-               };
-
-               vreg_l11c_2p8: ldo11 {
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <3544000>;
-               };
-
-               vreg_l12c_1p8: ldo12 {
-                       regulator-min-microvolt = <1650000>;
-                       regulator-max-microvolt = <2000000>;
-               };
-
-               vreg_l13c_3p0: ldo13 {
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <3544000>;
-               };
-
-               vreg_bob: bob {
-                       regulator-min-microvolt = <3008000>;
-                       regulator-max-microvolt = <3960000>;
-               };
-       };
-
        pmr735a-regulators {
                compatible = "qcom,pmr735a-rpmh-regulators";
                qcom,pmic-id = "e";
        };
 };
 
-&pmk8350_vadc {
-               pm8350_die_temp {
-                       reg = <PM8350_ADC7_DIE_TEMP>;
-                       label = "pm8350_die_temp";
-                       qcom,pre-scaling = <1 1>;
-               };
-
-               pmk8350_die_temp {
-                       reg = <PMK8350_ADC7_DIE_TEMP>;
-                       label = "pmk8350_die_temp";
-                       qcom,pre-scaling = <1 1>;
-               };
-
-               pmr735a_die_temp {
-                       reg = <PMR735A_ADC7_DIE_TEMP>;
-                       label = "pmr735a_die_temp";
-                       qcom,pre-scaling = <1 1>;
-               };
-
-               pmr735b_die_temp {
-                       reg = <PMR735B_ADC7_DIE_TEMP>;
-                       label = "pmr735b_die_temp";
-                       qcom,pre-scaling = <1 1>;
-               };
-};
-
-&qupv3_id_0 {
-       status = "okay";
-};
-
-&uart5 {
-       status = "okay";
-};
-
-&usb_1 {
-       status = "okay";
-};
-
-&usb_1_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_hsphy {
-       status = "okay";
-
-       vdda-pll-supply = <&vreg_l10c_0p8>;
-       vdda33-supply = <&vreg_l2b_3p0>;
-       vdda18-supply = <&vreg_l1c_1p8>;
-};
-
-&usb_1_qmpphy {
+&ipa {
        status = "okay";
-
-       vdda-phy-supply = <&vreg_l6b_1p2>;
-       vdda-pll-supply = <&vreg_l1b_0p8>;
-};
-
-&usb_2 {
-       status = "okay";
-};
-
-&usb_2_dwc3 {
-       dr_mode = "peripheral";
-};
-
-&usb_2_hsphy {
-       status = "okay";
-
-       vdda-pll-supply = <&vreg_l10c_0p8>;
-       vdda33-supply = <&vreg_l2b_3p0>;
-       vdda18-supply = <&vreg_l1c_1p8>;
+       modem-init;
 };
 
-/* PINCTRL - additions to nodes defined in sc7280.dtsi */
-
-&qup_uart5_default {
-       tx {
-               pins = "gpio46";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       rx {
-               pins = "gpio47";
-               drive-strength = <2>;
-               bias-pull-up;
+&pmk8350_vadc {
+       pmr735a_die_temp {
+               reg = <PMR735A_ADC7_DIE_TEMP>;
+               label = "pmr735a_die_temp";
+               qcom,pre-scaling = <1 1>;
        };
 };
diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
new file mode 100644 (file)
index 0000000..371a2a9
--- /dev/null
@@ -0,0 +1,341 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * sc7280 IDP board device tree source (common between SKU1 and SKU2)
+ *
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
+#include "sc7280.dtsi"
+#include "pm7325.dtsi"
+#include "pm8350c.dtsi"
+#include "pmk8350.dtsi"
+
+&apps_rsc {
+       pm7325-regulators {
+               compatible = "qcom,pm7325-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vreg_s1b_1p8: smps1 {
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2040000>;
+               };
+
+               vreg_s7b_0p9: smps7 {
+                       regulator-min-microvolt = <535000>;
+                       regulator-max-microvolt = <1120000>;
+               };
+
+               vreg_s8b_1p2: smps8 {
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1500000>;
+               };
+
+               vreg_l1b_0p8: ldo1 {
+                       regulator-min-microvolt = <825000>;
+                       regulator-max-microvolt = <925000>;
+               };
+
+               vreg_l2b_3p0: ldo2 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+               };
+
+               vreg_l6b_1p2: ldo6 {
+                       regulator-min-microvolt = <1140000>;
+                       regulator-max-microvolt = <1260000>;
+               };
+
+               vreg_l7b_2p9: ldo7 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+               };
+
+               vreg_l8b_0p9: ldo8 {
+                       regulator-min-microvolt = <870000>;
+                       regulator-max-microvolt = <970000>;
+               };
+
+               vreg_l9b_1p2: ldo9 {
+                       regulator-min-microvolt = <1080000>;
+                       regulator-max-microvolt = <1304000>;
+               };
+
+               vreg_l11b_1p7: ldo11 {
+                       regulator-min-microvolt = <1504000>;
+                       regulator-max-microvolt = <2000000>;
+               };
+
+               vreg_l12b_0p8: ldo12 {
+                       regulator-min-microvolt = <751000>;
+                       regulator-max-microvolt = <824000>;
+               };
+
+               vreg_l13b_0p8: ldo13 {
+                       regulator-min-microvolt = <530000>;
+                       regulator-max-microvolt = <824000>;
+               };
+
+               vreg_l14b_1p2: ldo14 {
+                       regulator-min-microvolt = <1080000>;
+                       regulator-max-microvolt = <1304000>;
+               };
+
+               vreg_l15b_0p8: ldo15 {
+                       regulator-min-microvolt = <765000>;
+                       regulator-max-microvolt = <1020000>;
+               };
+
+               vreg_l16b_1p2: ldo16 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1300000>;
+               };
+
+               vreg_l17b_1p8: ldo17 {
+                       regulator-min-microvolt = <1700000>;
+                       regulator-max-microvolt = <1900000>;
+               };
+
+               vreg_l18b_1p8: ldo18 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2000000>;
+               };
+
+               vreg_l19b_1p8: ldo19 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+       };
+
+       pm8350c-regulators {
+               compatible = "qcom,pm8350c-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vreg_s1c_2p2: smps1 {
+                       regulator-min-microvolt = <2190000>;
+                       regulator-max-microvolt = <2210000>;
+               };
+
+               vreg_s9c_1p0: smps9 {
+                       regulator-min-microvolt = <1010000>;
+                       regulator-max-microvolt = <1170000>;
+               };
+
+               vreg_l1c_1p8: ldo1 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1980000>;
+               };
+
+               vreg_l2c_1p8: ldo2 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <1980000>;
+               };
+
+               vreg_l3c_3p0: ldo3 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3540000>;
+               };
+
+               vreg_l4c_1p8: ldo4 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               vreg_l5c_1p8: ldo5 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+
+               vreg_l6c_2p9: ldo6 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+               };
+
+               vreg_l7c_3p0: ldo7 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3544000>;
+               };
+
+               vreg_l8c_1p8: ldo8 {
+                       regulator-min-microvolt = <1620000>;
+                       regulator-max-microvolt = <2000000>;
+               };
+
+               vreg_l9c_2p9: ldo9 {
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+               };
+
+               vreg_l10c_0p8: ldo10 {
+                       regulator-min-microvolt = <720000>;
+                       regulator-max-microvolt = <1050000>;
+               };
+
+               vreg_l11c_2p8: ldo11 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3544000>;
+               };
+
+               vreg_l12c_1p8: ldo12 {
+                       regulator-min-microvolt = <1650000>;
+                       regulator-max-microvolt = <2000000>;
+               };
+
+               vreg_l13c_3p0: ldo13 {
+                       regulator-min-microvolt = <2700000>;
+                       regulator-max-microvolt = <3544000>;
+               };
+
+               vreg_bob: bob {
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+               };
+       };
+};
+
+&ipa {
+       status = "okay";
+       modem-init;
+};
+
+&pmk8350_vadc {
+       pmk8350_die_temp {
+               reg = <PMK8350_ADC7_DIE_TEMP>;
+               label = "pmk8350_die_temp";
+               qcom,pre-scaling = <1 1>;
+       };
+};
+
+&qupv3_id_0 {
+       status = "okay";
+};
+
+&sdhc_1 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc1_on>;
+       pinctrl-1 = <&sdc1_off>;
+
+       non-removable;
+       no-sd;
+       no-sdio;
+
+       vmmc-supply = <&vreg_l7b_2p9>;
+       vqmmc-supply = <&vreg_l19b_1p8>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&sdc2_on>;
+       pinctrl-1 = <&sdc2_off>;
+
+       vmmc-supply = <&vreg_l9c_2p9>;
+       vqmmc-supply = <&vreg_l6c_2p9>;
+
+       cd-gpios = <&tlmm 91 GPIO_ACTIVE_LOW>;
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_hsphy {
+       status = "okay";
+
+       vdda-pll-supply = <&vreg_l10c_0p8>;
+       vdda33-supply = <&vreg_l2b_3p0>;
+       vdda18-supply = <&vreg_l1c_1p8>;
+};
+
+&usb_1_qmpphy {
+       status = "okay";
+
+       vdda-phy-supply = <&vreg_l6b_1p2>;
+       vdda-pll-supply = <&vreg_l1b_0p8>;
+};
+
+&usb_2 {
+       status = "okay";
+};
+
+&usb_2_dwc3 {
+       dr_mode = "peripheral";
+};
+
+&usb_2_hsphy {
+       status = "okay";
+
+       vdda-pll-supply = <&vreg_l10c_0p8>;
+       vdda33-supply = <&vreg_l2b_3p0>;
+       vdda18-supply = <&vreg_l1c_1p8>;
+};
+
+/* PINCTRL - additions to nodes defined in sc7280.dtsi */
+
+&qup_uart5_default {
+       tx {
+               pins = "gpio46";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       rx {
+               pins = "gpio47";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+};
+
+&sdc1_on {
+       clk {
+               bias-disable;
+               drive-strength = <16>;
+       };
+
+       cmd {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       data {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       rclk {
+               bias-pull-down;
+       };
+};
+
+&sdc2_on {
+       clk {
+               bias-disable;
+               drive-strength = <16>;
+       };
+
+       cmd {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       data {
+               bias-pull-up;
+               drive-strength = <10>;
+       };
+
+       sd-cd {
+               bias-pull-up;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp2.dts b/arch/arm64/boot/dts/qcom/sc7280-idp2.dts
new file mode 100644 (file)
index 0000000..1fc2add
--- /dev/null
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * sc7280 IDP2 board device tree source
+ *
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "sc7280-idp.dtsi"
+
+/ {
+       model = "Qualcomm Technologies, Inc. sc7280 IDP SKU2 platform";
+       compatible = "qcom,sc7280-idp2", "google,piglin", "qcom,sc7280";
+
+       aliases {
+               serial0 = &uart5;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
index 903f56a..53a21d0 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <dt-bindings/clock/qcom,gcc-sc7280.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/interconnect/qcom,sc7280.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
 #include <dt-bindings/power/qcom-aoss-qmp.h>
 
        chosen { };
 
+       aliases {
+               mmc1 = &sdhc_1;
+               mmc2 = &sdhc_2;
+       };
+
        clocks {
                xo_board: xo-board {
                        compatible = "fixed-clock";
                        no-map;
                        reg = <0x0 0x80b00000 0x0 0x100000>;
                };
+
+               ipa_fw_mem: memory@8b700000 {
+                       reg = <0 0x8b700000 0 0x10000>;
+                       no-map;
+               };
        };
 
        cpus {
                        #mbox-cells = <2>;
                };
 
+               qfprom: efuse@784000 {
+                       compatible = "qcom,sc7280-qfprom", "qcom,qfprom";
+                       reg = <0 0x00784000 0 0xa20>,
+                             <0 0x00780000 0 0xa20>,
+                             <0 0x00782000 0 0x120>,
+                             <0 0x00786000 0 0x1fff>;
+                       clocks = <&gcc GCC_SEC_CTRL_CLK_SRC>;
+                       clock-names = "core";
+                       power-domains = <&rpmhpd SC7280_MX>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
+
+               sdhc_1: sdhci@7c4000 {
+                       compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
+                       status = "disabled";
+
+                       reg = <0 0x007c4000 0 0x1000>,
+                             <0 0x007c5000 0 0x1000>;
+                       reg-names = "hc", "cqhci";
+
+                       iommus = <&apps_smmu 0xc0 0x0>;
+                       interrupts = <GIC_SPI 652 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 656 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&gcc GCC_SDCC1_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "core", "iface", "xo";
+                       interconnects = <&aggre1_noc MASTER_SDCC_1 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_1 0>;
+                       interconnect-names = "sdhc-ddr","cpu-sdhc";
+                       power-domains = <&rpmhpd SC7280_CX>;
+                       operating-points-v2 = <&sdhc1_opp_table>;
+
+                       bus-width = <8>;
+                       supports-cqe;
+
+                       qcom,dll-config = <0x0007642c>;
+                       qcom,ddr-config = <0x80040868>;
+
+                       mmc-ddr-1_8v;
+                       mmc-hs200-1_8v;
+                       mmc-hs400-1_8v;
+                       mmc-hs400-enhanced-strobe;
+
+                       sdhc1_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1800000 400000>;
+                                       opp-avg-kBps = <100000 0>;
+                               };
+
+                               opp-384000000 {
+                                       opp-hz = /bits/ 64 <384000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <5400000 1600000>;
+                                       opp-avg-kBps = <390000 0>;
+                               };
+                       };
+
+               };
+
                qupv3_id_0: geniqup@9c0000 {
                        compatible = "qcom,geni-se-qup";
                        reg = <0 0x009c0000 0 0x2000>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
+               ipa: ipa@1e40000 {
+                       compatible = "qcom,sc7280-ipa";
+
+                       iommus = <&apps_smmu 0x480 0x0>,
+                                <&apps_smmu 0x482 0x0>;
+                       reg = <0 0x1e40000 0 0x8000>,
+                             <0 0x1e50000 0 0x4ad0>,
+                             <0 0x1e04000 0 0x23000>;
+                       reg-names = "ipa-reg",
+                                   "ipa-shared",
+                                   "gsi";
+
+                       interrupts-extended = <&intc 0 654 IRQ_TYPE_EDGE_RISING>,
+                                             <&intc 0 432 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ipa",
+                                         "gsi",
+                                         "ipa-clock-query",
+                                         "ipa-setup-ready";
+
+                       clocks = <&rpmhcc RPMH_IPA_CLK>;
+                       clock-names = "core";
+
+                       interconnects = <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_IPA_CFG 0>;
+                       interconnect-names = "memory",
+                                            "config";
+
+                       qcom,smem-states = <&ipa_smp2p_out 0>,
+                                          <&ipa_smp2p_out 1>;
+                       qcom,smem-state-names = "ipa-clock-enabled-valid",
+                                               "ipa-clock-enabled";
+
+                       status = "disabled";
+               };
+
                tcsr_mutex: hwlock@1f40000 {
                        compatible = "qcom,tcsr-mutex", "syscon";
                        reg = <0 0x01f40000 0 0x40000>;
                        };
                };
 
+               sdhc_2: sdhci@8804000 {
+                       compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
+                       status = "disabled";
+
+                       reg = <0 0x08804000 0 0x1000>;
+
+                       iommus = <&apps_smmu 0x100 0x0>;
+                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&gcc GCC_SDCC2_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "core", "iface", "xo";
+                       interconnects = <&aggre1_noc MASTER_SDCC_2 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_2 0>;
+                       interconnect-names = "sdhc-ddr","cpu-sdhc";
+                       power-domains = <&rpmhpd SC7280_CX>;
+                       operating-points-v2 = <&sdhc2_opp_table>;
+
+                       bus-width = <4>;
+
+                       qcom,dll-config = <0x0007642c>;
+
+                       sdhc2_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1800000 400000>;
+                                       opp-avg-kBps = <100000 0>;
+                               };
+
+                               opp-202000000 {
+                                       opp-hz = /bits/ 64 <202000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <5400000 1600000>;
+                                       opp-avg-kBps = <200000 0>;
+                               };
+                       };
+
+               };
+
                usb_1_hsphy: phy@88e3000 {
                        compatible = "qcom,sc7280-usb-hs-phy",
                                     "qcom,usb-snps-hs-7nm-phy";
 
                        resets = <&gcc GCC_USB30_SEC_BCR>;
 
+                       interconnects = <&aggre1_noc MASTER_USB2 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB2 0>;
+                       interconnect-names = "usb-ddr", "apps-usb";
+
                        usb_2_dwc3: usb@8c00000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x08c00000 0 0xe000>;
 
                        resets = <&gcc GCC_USB30_PRIM_BCR>;
 
+                       interconnects = <&aggre1_noc MASTER_USB3_0 0 &mc_virt SLAVE_EBI1 0>,
+                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB3_0 0>;
+                       interconnect-names = "usb-ddr", "apps-usb";
+
                        usb_1_dwc3: usb@a600000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a600000 0 0xe000>;
                                pins = "gpio46", "gpio47";
                                function = "qup13";
                        };
+
+                       sdc1_on: sdc1-on {
+                               clk {
+                                       pins = "sdc1_clk";
+                               };
+
+                               cmd {
+                                       pins = "sdc1_cmd";
+                               };
+
+                               data {
+                                       pins = "sdc1_data";
+                               };
+
+                               rclk {
+                                       pins = "sdc1_rclk";
+                               };
+                       };
+
+                       sdc1_off: sdc1-off {
+                               clk {
+                                       pins = "sdc1_clk";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+
+                               cmd {
+                                       pins = "sdc1_cmd";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+
+                               data {
+                                       pins = "sdc1_data";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+
+                               rclk {
+                                       pins = "sdc1_rclk";
+                                       bias-bus-hold;
+                               };
+                       };
+
+                       sdc2_on: sdc2-on {
+                               clk {
+                                       pins = "sdc2_clk";
+                               };
+
+                               cmd {
+                                       pins = "sdc2_cmd";
+                               };
+
+                               data {
+                                       pins = "sdc2_data";
+                               };
+
+                               sd-cd {
+                                       pins = "gpio91";
+                               };
+                       };
+
+                       sdc2_off: sdc2-off {
+                               clk {
+                                       pins = "sdc2_clk";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+
+                               cmd {
+                                       pins ="sdc2_cmd";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+
+                               data {
+                                       pins ="sdc2_data";
+                                       drive-strength = <2>;
+                                       bias-bus-hold;
+                               };
+                       };
                };
 
                apps_smmu: iommu@15000000 {
 
                cpufreq_hw: cpufreq@18591000 {
                        compatible = "qcom,cpufreq-epss";
-                       reg = <0 0x18591000 0 0x1000>,
-                             <0 0x18592000 0 0x1000>,
-                             <0 0x18593000 0 0x1000>;
+                       reg = <0 0x18591100 0 0x900>,
+                             <0 0x18592100 0 0x900>,
+                             <0 0x18593100 0 0x900>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
                        clock-names = "xo", "alternate";
                        #freq-domain-cells = <1>;
index 46a7f2b..a4e1fb8 100644 (file)
@@ -5,9 +5,21 @@
 
 /dts-v1/;
 
-#include "sdm630-sony-xperia-ganges.dtsi"
+#include "sdm630.dtsi"
+#include "sdm630-sony-xperia-nile.dtsi"
 
 / {
        model = "Sony Xperia 10";
        compatible = "sony,kirin-row", "qcom,sdm630";
+
+       chosen {
+               framebuffer@9d400000 {
+                       reg = <0 0x9d400000 0 (2520 * 1080 * 4)>;
+                       height = <2520>;
+               };
+       };
 };
+
+/* Ganges devices feature a Novatek touchscreen instead. */
+/delete-node/ &touchscreen;
+/delete-node/ &vreg_l18a_1v8;
diff --git a/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges.dtsi b/arch/arm64/boot/dts/qcom/sdm630-sony-xperia-ganges.dtsi
deleted file mode 100644 (file)
index cf2e8b5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// SPDX-License-Identifier: BSD-3-Clause
-/*
- * Copyright (c) 2020, Martin Botka
- */
-
-/dts-v1/;
-
-/* Ganges is very similar to Nile, but
- * there are some differences that will need
- * to be addresed when more peripherals are
- * enabled upstream. Hence the separate DTSI.
- */
-#include "sdm630-sony-xperia-nile.dtsi"
-
-/ {
-       chosen {
-               framebuffer@9d400000 {
-                       reg = <0 0x9d400000 0 (2520 * 1080 * 4)>;
-                       height = <2520>;
-               };
-       };
-
-       /* Yes, this is intentional.
-        * Ganges devices only use gpio-keys for
-        * Volume Down, but currently there's an
-        * issue with it that has to be resolved.
-        * Until then, let's not make the kernel panic
-        */
-       /delete-node/ gpio-keys;
-
-       soc {
-
-               i2c@c175000 {
-                       status = "okay";
-
-                       /* Novatek touchscreen */
-               };
-       };
-
-};
index 9ba359c..849900e 100644 (file)
@@ -1,11 +1,10 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
- * Copyright (c) 2020, Konrad Dybcio
+ * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
+ * Copyright (c) 2020, AngeloGioacchino Del Regno
+ *                     <angelogioacchino.delregno@somainline.org>
  */
 
-/dts-v1/;
-
-#include "sdm630.dtsi"
 #include "pm660.dtsi"
 #include "pm660l.dtsi"
 #include <dt-bindings/gpio/gpio.h>
                };
        };
 
+       board_vbat: vbat-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "VBAT";
+
+               regulator-min-microvolt = <4000000>;
+               regulator-max-microvolt = <4000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vph_pwr";
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       cam_vdig_imx300_219_vreg: cam_vdig_imx300_219_vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "cam_vdig_imx300_219_vreg";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&tlmm 52 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_vdig_default>;
+       };
+
+       cam_vana_front_vreg: cam_vana_front_vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "cam_vana_front_vreg";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&imx219_vana_default>;
+       };
+
+       cam_vana_rear_vreg: cam_vana_rear_vreg {
+               compatible = "regulator-fixed";
+               regulator-name = "cam_vana_rear_vreg";
+               startup-delay-us = <0>;
+               enable-active-high;
+               gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
+               regulator-always-on;
+               pinctrl-names = "default";
+               pinctrl-0 = <&imx300_vana_default>;
+       };
+
        gpio_keys {
                status = "okay";
                compatible = "gpio-keys";
                input-name = "gpio-keys";
                #address-cells = <1>;
                #size-cells = <0>;
-               autorepeat;
 
                camera_focus {
                        label = "Camera Focus";
                };
        };
 
-       soc {
-               sdhci@c0c4000 {
-                       status = "okay";
+       /*
+        * Until we hook up type-c detection, we
+        * have to stick with this. But it works.
+        */
+       extcon_usb: extcon-usb {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&tlmm 58 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&adsp_pil {
+       firmware-name = "adsp.mdt";
+};
+
+&blsp_i2c1 {
+       status = "okay";
+
+       touchscreen: synaptics-rmi4-i2c@70 {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               interrupts-extended = <&tlmm 45 0x2008>;
 
-                       mmc-ddr-1_8v;
-                       /* SoMC Nile platform's eMMC doesn't support HS200 mode */
-                       mmc-hs400-1_8v;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts_int_active &ts_lcd_id_active>;
+
+               syna,reset-delay-ms = <200>;
+               syna,startup-delay-ms = <220>;
+
+               rmi4-f01@1 {
+                       reg = <0x01>;
+                       syna,nosleep-mode = <1>;
                };
 
-               i2c@c175000 {
-                       status = "okay";
+               rmi4-f11@11 {
+                       reg = <0x11>;
+                       syna,sensor-type = <1>;
+               };
+       };
+};
+
+&blsp_i2c2 {
+       status = "okay";
+
+       /* SMB1351 charger */
+};
+
+/* I2C3, 4, 5, 7 and 8 are disabled on this board. */
+
+&blsp_i2c6 {
+       status = "okay";
+
+       /* NXP NFC */
+};
+
+&blsp1_uart2 {
+       status = "okay";
+
+       /* MSM serial console */
+};
+
+&blsp2_uart1 {
+       status = "okay";
 
-                       /* Synaptics touchscreen */
+       /* HCI Bluetooth */
+};
+
+&pon {
+       volup {
+               compatible = "qcom,pm8941-resin";
+               interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
+               debounce = <15625>;
+               bias-pull-up;
+               linux,code = <KEY_VOLUMEUP>;
+       };
+};
+
+&qusb2phy {
+       status = "okay";
+
+       vdd-supply = <&vreg_l1b_0p925>;
+       vdda-pll-supply = <&vreg_l10a_1p8>;
+       vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
+};
+
+&rpm_requests {
+       pm660l-regulators {
+               compatible = "qcom,rpm-pm660l-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+
+               vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>;
+               vdd_l2-supply = <&vreg_bob>;
+               vdd_l3_l5_l7_l8-supply = <&vreg_bob>;
+               vdd_l4_l6-supply = <&vreg_bob>;
+               vdd_bob-supply = <&vph_pwr>;
+
+               vreg_s1b_1p125: s1 {
+                       regulator-min-microvolt = <1125000>;
+                       regulator-max-microvolt = <1125000>;
+                       regulator-enable-ramp-delay = <200>;
+                       regulator-ramp-delay = <0>;
                };
 
-               i2c@c176000 {
-                       status = "okay";
+               vreg_s2b_1p05: s2 {
+                       regulator-min-microvolt = <1050000>;
+                       regulator-max-microvolt = <1050000>;
+                       regulator-enable-ramp-delay = <200>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               /*
+                * At least on Nile's configuration, S3B/S4B (VDD_CX) and
+                * S5B (VDD_MX) are managed only through RPM Power Domains.
+                * Trying to set a voltage on the main supply will create
+                * havoc and freeze the SoC.
+                * In any case, reference voltages for these regulators are:
+                * S3B/S4B: 0.870V
+                * S5B: 0.915V
+                */
 
-                       /* SMB1351 charger */
+               /* LDOs */
+               vreg_l1b_0p925: l1 {
+                       regulator-min-microvolt = <920000>;
+                       regulator-max-microvolt = <928000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
                };
 
-               serial@c1af000 {
-                       status = "okay";
+               vreg_l2b_2p95: l2 {
+                       /*
+                        * This regulator supports 1.648 - 3.104V on this board
+                        * but we set a max voltage of anything less than 2.7V
+                        * to satisfy a condition in sdhci.c that will disable
+                        * 3.3V SDHCI signaling, which happens to be not really
+                        * supported on the Xperia Nile/Ganges platform.
+                        */
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2696000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
                };
 
-               /* I2C3, 4, 5, 7 and 8 are disabled on this board. */
+               vreg_l3b_3p0: l3 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-min-microamp = <200>;
+                       regulator-max-microamp = <600000>;
+                       regulator-system-load = <100000>;
+                       regulator-allow-set-load;
+               };
 
-               i2c@c1b6000 {
-                       status = "okay";
+               vreg_l4b_29p5: l4 {
+                       regulator-min-microvolt = <2944000>;
+                       regulator-max-microvolt = <2952000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+
+                       regulator-min-microamp = <200>;
+                       regulator-max-microamp = <600000>;
+                       regulator-system-load = <570000>;
+                       regulator-allow-set-load;
+               };
+
+               /*
+                * Downstream specifies a range of 1721-3600mV,
+                * but the only assigned consumers are SDHCI2 VMMC
+                * and Coresight QPDI that both request pinned 2.95V.
+                * Tighten the range to 1.8-3.328 (closest to 3.3) to
+                * make the mmc driver happy.
+                */
+               vreg_l5b_29p5: l5 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3328000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
+                       regulator-system-load = <800000>;
+               };
+
+               vreg_l6b_3p3: l6 {
+                       regulator-min-microvolt = <1704000>;
+                       regulator-max-microvolt = <3312000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l7b_3p125: l7 {
+                       regulator-min-microvolt = <2704000>;
+                       regulator-max-microvolt = <3128000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l8b_3p3: l8 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3400000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               /* L9B (870mV) is currently unused */
+               /* L10B (915mV) is currently unused */
+
+               vreg_bob: bob {
+                       regulator-min-microvolt = <3304000>;
+                       regulator-max-microvolt = <3624000>;
+                       regulator-enable-ramp-delay = <500>;
+                       regulator-ramp-delay = <0>;
+               };
+       };
+
+       pm660-regulators {
+               compatible = "qcom,rpm-pm660-regulators";
+
+               vdd_s1-supply = <&vph_pwr>;
+               vdd_s2-supply = <&vph_pwr>;
+               vdd_s3-supply = <&vph_pwr>;
+               vdd_s4-supply = <&vph_pwr>;
+               vdd_s5-supply = <&vph_pwr>;
+               vdd_s6-supply = <&vph_pwr>;
+
+               vdd_l1_l6_l7-supply = <&vreg_s5a_1p35>;
+               vdd_l2_l3-supply = <&vreg_s2b_1p05>;
+               vdd_l5-supply = <&vreg_s2b_1p05>;
+               vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>;
+               vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>;
+
+               /*
+                * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed
+                * by the Core Power Reduction hardened (CPRh) and the
+                * Operating State Manager (OSM) HW automatically.
+                */
+
+               vreg_s4a_2p04: s4 {
+                       regulator-min-microvolt = <2040000>;
+                       regulator-max-microvolt = <2040000>;
+                       regulator-enable-ramp-delay = <200>;
+                       regulator-ramp-delay = <0>;
+                       regulator-always-on;
+               };
+
+               vreg_s5a_1p35: s5 {
+                       regulator-min-microvolt = <1224000>;
+                       regulator-max-microvolt = <1350000>;
+                       regulator-enable-ramp-delay = <200>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_s6a_0p87: s6 {
+                       regulator-min-microvolt = <504000>;
+                       regulator-max-microvolt = <992000>;
+                       regulator-enable-ramp-delay = <150>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               /* LDOs */
+               vreg_l1a_1p225: l1 {
+                       regulator-min-microvolt = <1226000>;
+                       regulator-max-microvolt = <1250000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l2a_1p0: l2 {
+                       regulator-min-microvolt = <944000>;
+                       regulator-max-microvolt = <1008000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l3a_1p0: l3 {
+                       regulator-min-microvolt = <944000>;
+                       regulator-max-microvolt = <1008000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l5a_0p848: l5 {
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <952000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l6a_1p3: l6 {
+                       regulator-min-microvolt = <1304000>;
+                       regulator-max-microvolt = <1368000>;
+                       regulator-allow-set-load;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l7a_1p2: l7 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l8a_1p8: l8 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-system-load = <325000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l9a_1p8: l9 {
+                       regulator-min-microvolt = <1804000>;
+                       regulator-max-microvolt = <1896000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l10a_1p8: l10 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1944000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l11a_1p8: l11 {
+                       regulator-min-microvolt = <1784000>;
+                       regulator-max-microvolt = <1944000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l12a_1p8: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1944000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
 
-                       /* NXP NFC */
+               /* This gives power to the LPDDR4: never turn it off! */
+               vreg_l13a_1p8: l13 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1944000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-boot-on;
+                       regulator-always-on;
                };
+
+               vreg_l14a_1p8: l14 {
+                       regulator-min-microvolt = <1710000>;
+                       regulator-max-microvolt = <1904000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l15a_1p8: l15 {
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2952000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               /* L16A (2.70V) is unused */
+
+               vreg_l17a_1p8: l17 {
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2952000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+               };
+
+               vreg_l18a_1v8: l18 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <10>;
+                       regulator-min-microamp = <200>;
+                       regulator-max-microamp = <50000>;
+                       regulator-system-load = <10000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l19a_3p3: l19 {
+                       regulator-min-microvolt = <3312000>;
+                       regulator-max-microvolt = <3400000>;
+                       regulator-enable-ramp-delay = <250>;
+                       regulator-ramp-delay = <0>;
+                       regulator-allow-set-load;
+               };
+       };
+};
+
+&sdhc_1 {
+       status = "okay";
+       supports-cqe;
+
+       /* SoMC Nile platform's eMMC doesn't support HS200 mode */
+       mmc-ddr-1_8v;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+
+       vmmc-supply = <&vreg_l4b_29p5>;
+       vqmmc-supply = <&vreg_l8a_1p8>;
+};
+
+&sdhc_2 {
+       status = "okay";
+
+       vmmc-supply = <&vreg_l5b_29p5>;
+       vqmmc-supply = <&vreg_l2b_2p95>;
+};
+
+&tlmm {
+       gpio-reserved-ranges = <8 4>;
+
+       ts_int_active: ts-int-active {
+               pins = "gpio45";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       ts_lcd_id_active: ts-lcd-id-active {
+               pins = "gpio56";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       imx300_vana_default: imx300-vana-default {
+               pins = "gpio50";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
        };
+
+       imx219_vana_default: imx219-vana-default {
+               pins = "gpio51";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+       };
+
+       cam_vdig_default: cam-vdig-default {
+               pins = "gpio52";
+               function = "gpio";
+               bias-disable;
+               drive-strength = <2>;
+       };
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       dr_mode = "peripheral";
+       extcon = <&extcon_usb>;
 };
index f91a928..9153e66 100644 (file)
@@ -1,12 +1,17 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
- * Copyright (c) 2020, Konrad Dybcio
+ * Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
+ * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
  */
 
 #include <dt-bindings/clock/qcom,gcc-sdm660.h>
+#include <dt-bindings/clock/qcom,gpucc-sdm660.h>
+#include <dt-bindings/clock/qcom,mmcc-sdm660.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/soc/qcom,apr.h>
 
 / {
        interrupt-parent = <&intc>;
        chosen { };
 
        clocks {
-               xo_board: xo_board {
+               xo_board: xo-board {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <19200000>;
                        clock-output-names = "xo_board";
                };
 
-               sleep_clk: sleep_clk {
+               sleep_clk: sleep-clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <32764>;
                };
        };
 
-       memory {
+       memory@80000000 {
                device_type = "memory";
                /* We expect the bootloader to fill in the reg */
-               reg = <0 0 0 0>;
+               reg = <0x0 0x80000000 0x0 0x0>;
        };
 
        pmu {
                };
 
                qhee_code: qhee-code@85800000 {
-                       reg = <0x0 0x85800000 0x0 0x3700000>;
+                       reg = <0x0 0x85800000 0x0 0x600000>;
                        no-map;
                };
 
+               rmtfs_mem: memory@85e00000 {
+                       compatible = "qcom,rmtfs-mem";
+                       reg = <0x0 0x85e00000 0x0 0x200000>;
+                       no-map;
+
+                       qcom,client-id = <1>;
+                       qcom,vmid = <15>;
+               };
+
                smem_region: smem-mem@86000000 {
                        reg = <0 0x86000000 0 0x200000>;
                        no-map;
                        no-map;
                };
 
-               modem_fw_mem: modem-fw-region@8ac00000 {
+               mpss_region: mpss@8ac00000 {
                        reg = <0x0 0x8ac00000 0x0 0x7e00000>;
                        no-map;
                };
 
-               adsp_fw_mem: adsp-fw-region@92a00000 {
+               adsp_region: adsp@92a00000 {
                        reg = <0x0 0x92a00000 0x0 0x1e00000>;
                        no-map;
                };
 
-               pil_mba_mem: pil-mba-region@94800000 {
+               mba_region: mba@94800000 {
                        reg = <0x0 0x94800000 0x0 0x200000>;
                        no-map;
                };
 
-               buffer_mem: buffer-region@94a00000 {
+               buffer_mem: tzbuffer@94a00000 {
                        reg = <0x0 0x94a00000 0x0 0x100000>;
                        no-map;
                };
 
-               venus_fw_mem: venus-fw-region@9f800000 {
+               venus_region: venus@9f800000 {
                        reg = <0x0 0x9f800000 0x0 0x800000>;
                        no-map;
                };
 
-               secure_region2: secure-region2@f7c00000 {
-                       reg = <0x0 0xf7c00000 0x0 0x5c00000>;
-                       no-map;
-               };
-
                adsp_mem: adsp-region@f6000000 {
                        reg = <0x0 0xf6000000 0x0 0x800000>;
                        no-map;
                };
 
-               qseecom_ta_mem: qseecom-ta-region@fec00000 {
-                       reg = <0x0 0xfec00000 0x0 0x1000000>;
-                       no-map;
-               };
-
                qseecom_mem: qseecom-region@f6800000 {
                        reg = <0x0 0xf6800000 0x0 0x1400000>;
                        no-map;
                };
 
-               secure_display_memory: secure-region@f5c00000 {
-                       reg = <0x0 0xf5c00000 0x0 0x5c00000>;
-                       no-map;
-               };
-
-               cont_splash_mem: cont-splash-region@9d400000 {
-                       reg = <0x0 0x9d400000 0x0 0x23ff000>;
+               zap_shader_region: gpu@fed00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0xfed00000 0x0 0xa00000>;
                        no-map;
                };
        };
                                compatible = "qcom,rpmcc-sdm660", "qcom,rpmcc";
                                #clock-cells = <1>;
                        };
+
+                       rpmpd: power-controller {
+                               compatible = "qcom,sdm660-rpmpd";
+                               #power-domain-cells = <1>;
+                               operating-points-v2 = <&rpmpd_opp_table>;
+
+                               rpmpd_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       rpmpd_opp_ret: opp1 {
+                                               opp-level = <RPM_SMD_LEVEL_RETENTION>;
+                                       };
+
+                                       rpmpd_opp_ret_plus: opp2 {
+                                               opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>;
+                                       };
+
+                                       rpmpd_opp_min_svs: opp3 {
+                                               opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                                       };
+
+                                       rpmpd_opp_low_svs: opp4 {
+                                               opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                                       };
+
+                                       rpmpd_opp_svs: opp5 {
+                                               opp-level = <RPM_SMD_LEVEL_SVS>;
+                                       };
+
+                                       rpmpd_opp_svs_plus: opp6 {
+                                               opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                                       };
+
+                                       rpmpd_opp_nom: opp7 {
+                                               opp-level = <RPM_SMD_LEVEL_NOM>;
+                                       };
+
+                                       rpmpd_opp_nom_plus: opp8 {
+                                               opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                                       };
+
+                                       rpmpd_opp_turbo: opp9 {
+                                               opp-level = <RPM_SMD_LEVEL_TURBO>;
+                                       };
+                               };
+                       };
                };
        };
 
                hwlocks = <&tcsr_mutex 3>;
        };
 
+       smp2p-adsp {
+               compatible = "qcom,smp2p";
+               qcom,smem = <443>, <429>;
+               interrupts = <GIC_SPI 158 IRQ_TYPE_EDGE_RISING>;
+               mboxes = <&apcs_glb 10>;
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <2>;
+
+               adsp_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               adsp_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smp2p-mpss {
+               compatible = "qcom,smp2p";
+               qcom,smem = <435>, <428>;
+               interrupts = <GIC_SPI 451 IRQ_TYPE_EDGE_RISING>;
+               mboxes = <&apcs_glb 14>;
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <1>;
+
+               modem_smp2p_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               modem_smp2p_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
        soc {
                #address-cells = <1>;
                #size-cells = <1>;
                        reg = <0x00780000 0x621c>;
                        #address-cells = <1>;
                        #size-cells = <1>;
+
+                       qusb2_hstx_trim: hstx-trim@240 {
+                               reg = <0x240 0x1>;
+                               bits = <25 3>;
+                       };
+
+                       gpu_speed_bin: gpu-speed-bin@41a0 {
+                               reg = <0x41a0 0x1>;
+                               bits = <21 7>;
+                       };
                };
 
                rng: rng@793000 {
                        clock-names = "core";
                };
 
+               bimc: interconnect@1008000 {
+                       compatible = "qcom,sdm660-bimc";
+                       reg = <0x01008000 0x78000>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
+               };
+
                restart@10ac000 {
                        compatible = "qcom,pshold";
                        reg = <0x010ac000 0x4>;
                };
 
+               cnoc: interconnect@1500000 {
+                       compatible = "qcom,sdm660-cnoc";
+                       reg = <0x01500000 0x10000>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
+                                <&rpmcc RPM_SMD_CNOC_A_CLK>;
+               };
+
+               snoc: interconnect@1626000 {
+                       compatible = "qcom,sdm660-snoc";
+                       reg = <0x01626000 0x7090>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
+                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
+               };
+
                anoc2_smmu: iommu@16c0000 {
                        compatible = "qcom,sdm630-smmu-v2", "qcom,smmu-v2";
                        reg = <0x016c0000 0x40000>;
-                       #iommu-cells = <1>;
 
+                       assigned-clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
+                       assigned-clock-rates = <1000>;
+                       clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
+                       clock-names = "bus";
                        #global-interrupts = <2>;
+                       #iommu-cells = <1>;
+
                        interrupts =
                                <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
                                <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
                        status = "disabled";
                };
 
+               a2noc: interconnect@1704000 {
+                       compatible = "qcom,sdm660-a2noc";
+                       reg = <0x01704000 0xc100>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a";
+                       clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
+                                <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>;
+               };
+
+               mnoc: interconnect@1745000 {
+                       compatible = "qcom,sdm660-mnoc";
+                       reg = <0x01745000 0xA010>;
+                       #interconnect-cells = <1>;
+                       clock-names = "bus", "bus_a", "iface";
+                       clocks = <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK>,
+                                <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK_A>,
+                                <&mmcc AHB_CLK_SRC>;
+               };
+
+               tsens: thermal-sensor@10ae000 {
+                       compatible = "qcom,sdm630-tsens", "qcom,tsens-v2";
+                       reg = <0x010ae000 0x1000>, /* TM */
+                                 <0x010ad000 0x1000>; /* SROT */
+                       #qcom,sensors = <12>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
+                                        <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uplow", "critical";
+                       #thermal-sensor-cells = <1>;
+               };
+
                tcsr_mutex_regs: syscon@1f40000 {
                        compatible = "syscon";
-                       reg = <0x01f40000 0x20000>;
+                       reg = <0x01f40000 0x40000>;
                };
 
-               tlmm: pinctrl@3000000 {
+               tlmm: pinctrl@3100000 {
                        compatible = "qcom,sdm630-pinctrl";
-                       reg = <0x03000000 0xc00000>;
+                       reg = <0x03100000 0x400000>,
+                                 <0x03500000 0x400000>,
+                                 <0x03900000 0x400000>;
+                       reg-names = "south", "center", "north";
                        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
                        gpio-controller;
-                       #gpio-cells = <0x2>;
+                       gpio-ranges = <&tlmm 0 0 114>;
+                       #gpio-cells = <2>;
                        interrupt-controller;
-                       #interrupt-cells = <0x2>;
+                       #interrupt-cells = <2>;
 
                        blsp1_uart1_default: blsp1-uart1-default {
                                pins = "gpio0", "gpio1", "gpio2", "gpio3";
                                bias-disable;
                        };
 
-                       blsp2_uart1_tx_active: blsp2-uart1-tx-active {
-                               pins = "gpio16";
-                               drive-strength = <2>;
-                               bias-disable;
-                       };
-
-                       blsp2_uart1_tx_sleep: blsp2-uart1-tx-sleep {
-                               pins = "gpio16";
-                               drive-strength = <2>;
-                               bias-pull-up;
-                       };
+                       blsp2_uart1_default: blsp2-uart1-active {
+                               tx-rts {
+                                       pins = "gpio16", "gpio19";
+                                       function = "blsp_uart5";
+                                       drive-strength = <2>;
+                                       bias-disable;
+                               };
 
-                       blsp2_uart1_rxcts_active: blsp2-uart1-rxcts-active {
-                               pins = "gpio17", "gpio18";
-                               drive-strength = <2>;
-                               bias-disable;
-                       };
+                               rx {
+                                       /*
+                                        * Avoid garbage data while BT module
+                                        * is powered off or not driving signal
+                                        */
+                                       pins = "gpio17";
+                                       function = "blsp_uart5";
+                                       drive-strength = <2>;
+                                       bias-pull-up;
+                               };
 
-                       blsp2_uart1_rxcts_sleep: blsp2-uart1-rxcts-sleep {
-                               pins = "gpio17", "gpio18";
-                               drive-strength = <2>;
-                               bias-no-pull;
+                               cts {
+                                       /* Match the pull of the BT module */
+                                       pins = "gpio18";
+                                       function = "blsp_uart5";
+                                       drive-strength = <2>;
+                                       bias-pull-down;
+                               };
                        };
 
-                       blsp2_uart1_rfr_active: blsp2-uart1-rfr-active {
-                               pins = "gpio19";
-                               drive-strength = <2>;
-                               bias-disable;
-                       };
+                       blsp2_uart1_sleep: blsp2-uart1-sleep {
+                               tx {
+                                       pins = "gpio16";
+                                       function = "gpio";
+                                       drive-strength = <2>;
+                                       bias-pull-up;
+                               };
 
-                       blsp2_uart1_rfr_sleep: blsp2-uart1-rfr-sleep {
-                               pins = "gpio19";
-                               drive-strength = <2>;
-                               bias-no-pull;
+                               rx-cts-rts {
+                                       pins = "gpio17", "gpio18", "gpio19";
+                                       function = "gpio";
+                                       drive-strength = <2>;
+                                       bias-no-pull;
+                               };
                        };
 
                        i2c1_default: i2c1-default {
                                pins = "gpio2", "gpio3";
+                               function = "blsp_i2c1";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c1_sleep: i2c1-sleep {
                                pins = "gpio2", "gpio3";
+                               function = "blsp_i2c1";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c2_default: i2c2-default {
                                pins = "gpio6", "gpio7";
+                               function = "blsp_i2c2";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c2_sleep: i2c2-sleep {
                                pins = "gpio6", "gpio7";
+                               function = "blsp_i2c2";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c3_default: i2c3-default {
                                pins = "gpio10", "gpio11";
+                               function = "blsp_i2c3";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c3_sleep: i2c3-sleep {
                                pins = "gpio10", "gpio11";
+                               function = "blsp_i2c3";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c4_default: i2c4-default {
                                pins = "gpio14", "gpio15";
+                               function = "blsp_i2c4";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c4_sleep: i2c4-sleep {
                                pins = "gpio14", "gpio15";
+                               function = "blsp_i2c4";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c5_default: i2c5-default {
                                pins = "gpio18", "gpio19";
+                               function = "blsp_i2c5";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c5_sleep: i2c5-sleep {
                                pins = "gpio18", "gpio19";
+                               function = "blsp_i2c5";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c6_default: i2c6-default {
                                pins = "gpio22", "gpio23";
+                               function = "blsp_i2c6";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c6_sleep: i2c6-sleep {
                                pins = "gpio22", "gpio23";
+                               function = "blsp_i2c6";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c7_default: i2c7-default {
                                pins = "gpio26", "gpio27";
+                               function = "blsp_i2c7";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c7_sleep: i2c7-sleep {
                                pins = "gpio26", "gpio27";
+                               function = "blsp_i2c7";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
                        i2c8_default: i2c8-default {
                                pins = "gpio30", "gpio31";
+                               function = "blsp_i2c8";
                                drive-strength = <2>;
                                bias-disable;
                        };
 
                        i2c8_sleep: i2c8-sleep {
                                pins = "gpio30", "gpio31";
+                               function = "blsp_i2c8";
                                drive-strength = <2>;
                                bias-pull-up;
                        };
 
-                       sdc1_clk_on: sdc1-clk-on {
-                               pins = "sdc1_clk";
-                               bias-disable;
-                               drive-strength = <16>;
-                       };
+                       cci0_default: cci0_default {
+                               pinmux {
+                                       pins = "gpio36","gpio37";
+                                       function = "cci_i2c";
+                               };
 
-                       sdc1_clk_off: sdc1-clk-off {
-                               pins = "sdc1_clk";
-                               bias-disable;
-                               drive-strength = <2>;
+                               pinconf {
+                                       pins = "gpio36","gpio37";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
                        };
 
-                       sdc1_cmd_on: sdc1-cmd-on {
-                               pins = "sdc1_cmd";
-                               bias-pull-up;
-                               drive-strength = <10>;
+                       cci1_default: cci1_default {
+                               pinmux {
+                                       pins = "gpio38","gpio39";
+                                       function = "cci_i2c";
+                               };
+
+                               pinconf {
+                                       pins = "gpio38","gpio39";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
                        };
 
-                       sdc1_cmd_off: sdc1-cmd-off {
-                               pins = "sdc1_cmd";
-                               bias-pull-up;
-                               drive-strength = <2>;
+                       sdc1_state_on: sdc1-on {
+                               clk {
+                                       pins = "sdc1_clk";
+                                       bias-disable;
+                                       drive-strength = <16>;
+                               };
+
+                               cmd {
+                                       pins = "sdc1_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+
+                               data {
+                                       pins = "sdc1_data";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+
+                               rclk {
+                                       pins = "sdc1_rclk";
+                                       bias-pull-down;
+                               };
                        };
 
-                       sdc1_data_on: sdc1-data-on {
-                               pins = "sdc1_data";
-                               bias-pull-up;
-                               drive-strength = <8>;
+                       sdc1_state_off: sdc1-off {
+                               clk {
+                                       pins = "sdc1_clk";
+                                       bias-disable;
+                                       drive-strength = <2>;
+                               };
+
+                               cmd {
+                                       pins = "sdc1_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+
+                               data {
+                                       pins = "sdc1_data";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+
+                               rclk {
+                                       pins = "sdc1_rclk";
+                                       bias-pull-down;
+                               };
                        };
 
-                       sdc1_data_off: sdc1-data-off {
-                               pins = "sdc1_data";
-                               bias-pull-up;
-                               drive-strength = <2>;
+                       sdc2_state_on: sdc2-on {
+                               clk {
+                                       pins = "sdc2_clk";
+                                       bias-disable;
+                                       drive-strength = <16>;
+                               };
+
+                               cmd {
+                                       pins = "sdc2_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+
+                               data {
+                                       pins = "sdc2_data";
+                                       bias-pull-up;
+                                       drive-strength = <10>;
+                               };
+
+                               sd-cd {
+                                       pins = "gpio54";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
                        };
 
-                       sdc1_rclk_on: sdc1-rclk-on {
-                               pins = "sdc1_rclk";
-                               bias-pull-down;
+                       sdc2_state_off: sdc2-off {
+                               clk {
+                                       pins = "sdc2_clk";
+                                       bias-disable;
+                                       drive-strength = <2>;
+                               };
+
+                               cmd {
+                                       pins = "sdc2_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+
+                               data {
+                                       pins = "sdc2_data";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+
+                               sd-cd {
+                                       pins = "gpio54";
+                                       bias-disable;
+                                       drive-strength = <2>;
+                               };
                        };
+               };
+
+               adreno_gpu: gpu@5000000 {
+                       compatible = "qcom,adreno-508.0", "qcom,adreno";
+                       #stream-id-cells = <16>;
+
+                       reg = <0x05000000 0x40000>;
+                       reg-names = "kgsl_3d0_reg_memory";
 
-                       sdc1_rclk_off: sdc1-rclk-off {
-                               pins = "sdc1_rclk";
-                               bias-pull-down;
+                       interrupts = <0 300 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
+                               <&gpucc GPUCC_RBBMTIMER_CLK>,
+                               <&gcc GCC_BIMC_GFX_CLK>,
+                               <&gcc GCC_GPU_BIMC_GFX_CLK>,
+                               <&gpucc GPUCC_RBCPR_CLK>,
+                               <&gpucc GPUCC_GFX3D_CLK>;
+
+                       clock-names = "iface",
+                               "rbbmtimer",
+                               "mem",
+                               "mem_iface",
+                               "rbcpr",
+                               "core";
+
+                       power-domains = <&rpmpd SDM660_VDDMX>;
+                       iommus = <&kgsl_smmu 0>;
+
+                       nvmem-cells = <&gpu_speed_bin>;
+                       nvmem-cell-names = "speed_bin";
+
+                       interconnects = <&gnoc 1 &bimc 5>;
+                       interconnect-names = "gfx-mem";
+
+                       operating-points-v2 = <&gpu_sdm630_opp_table>;
+
+                       gpu_sdm630_opp_table: opp-table {
+                               compatible  = "operating-points-v2";
+                               opp-775000000 {
+                                       opp-hz = /bits/ 64 <775000000>;
+                                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                                       opp-peak-kBps = <5412000>;
+                                       opp-supported-hw = <0xA2>;
+                               };
+                               opp-647000000 {
+                                       opp-hz = /bits/ 64 <647000000>;
+                                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                                       opp-peak-kBps = <4068000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                               opp-588000000 {
+                                       opp-hz = /bits/ 64 <588000000>;
+                                       opp-level = <RPM_SMD_LEVEL_NOM>;
+                                       opp-peak-kBps = <3072000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                               opp-465000000 {
+                                       opp-hz = /bits/ 64 <465000000>;
+                                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                                       opp-peak-kBps = <2724000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                               opp-370000000 {
+                                       opp-hz = /bits/ 64 <370000000>;
+                                       opp-level = <RPM_SMD_LEVEL_SVS>;
+                                       opp-peak-kBps = <2188000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                               opp-240000000 {
+                                       opp-hz = /bits/ 64 <240000000>;
+                                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                                       opp-peak-kBps = <1648000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
+                               opp-160000000 {
+                                       opp-hz = /bits/ 64 <160000000>;
+                                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                                       opp-peak-kBps = <1200000>;
+                                       opp-supported-hw = <0xFF>;
+                               };
                        };
                };
 
                kgsl_smmu: iommu@5040000 {
-                       compatible = "qcom,sdm630-smmu-v2", "qcom,smmu-v2";
+                       compatible = "qcom,sdm630-smmu-v2",
+                                    "qcom,adreno-smmu", "qcom,smmu-v2";
                        reg = <0x05040000 0x10000>;
-                       #iommu-cells = <1>;
 
+                       /*
+                        * GX GDSC parent is CX. We need to bring up CX for SMMU
+                        * but we need both up for Adreno. On the other hand, we
+                        * need to manage the GX rpmpd domain in the adreno driver.
+                        * Enable CX/GX GDSCs here so that we can manage just the GX
+                        * RPM Power Domain in the Adreno driver.
+                        */
+                       power-domains = <&gpucc GPU_GX_GDSC>;
+                       clocks = <&gcc GCC_GPU_CFG_AHB_CLK>,
+                                <&gcc GCC_BIMC_GFX_CLK>,
+                                <&gcc GCC_GPU_BIMC_GFX_CLK>;
+                       clock-names = "iface", "mem", "mem_iface";
                        #global-interrupts = <2>;
+                       #iommu-cells = <1>;
+
                        interrupts =
                                <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
                                <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
                        status = "disabled";
                };
 
+               gpucc: clock-controller@5065000 {
+                       compatible = "qcom,gpucc-sdm630";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       reg = <0x05065000 0x9038>;
+
+                       clocks = <&xo_board>,
+                                <&gcc GCC_GPU_GPLL0_CLK>,
+                                <&gcc GCC_GPU_GPLL0_DIV_CLK>;
+                       clock-names = "xo",
+                                     "gcc_gpu_gpll0_clk",
+                                     "gcc_gpu_gpll0_div_clk";
+                       status = "disabled";
+               };
+
                lpass_smmu: iommu@5100000 {
                        compatible = "qcom,sdm630-smmu-v2", "qcom,smmu-v2";
                        reg = <0x05100000 0x40000>;
                        cell-index = <0>;
                };
 
+               usb3: usb@a8f8800 {
+                       compatible = "qcom,sdm660-dwc3", "qcom,dwc3";
+                       reg = <0x0a8f8800 0x400>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       clocks = <&gcc GCC_CFG_NOC_USB3_AXI_CLK>,
+                                <&gcc GCC_USB30_MASTER_CLK>,
+                                <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
+                                <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
+                                <&gcc GCC_USB30_MOCK_UTMI_CLK>,
+                                <&gcc GCC_USB30_SLEEP_CLK>;
+                       clock-names = "cfg_noc", "core", "iface", "bus",
+                                     "mock_utmi", "sleep";
+
+                       assigned-clocks = <&gcc GCC_USB30_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB30_MASTER_CLK>,
+                                         <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
+                       assigned-clock-rates = <19200000>, <120000000>,
+                                              <19200000>;
+
+                       interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hs_phy_irq", "ss_phy_irq";
+
+                       power-domains = <&gcc USB_30_GDSC>;
+                       qcom,select-utmi-as-pipe-clk;
+
+                       resets = <&gcc GCC_USB_30_BCR>;
+
+                       usb3_dwc3: usb@a800000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0a800000 0xc8d0>;
+                               interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
+
+                               /*
+                                * SDM630 technically supports USB3 but I
+                                * haven't seen any devices making use of it.
+                                */
+                               maximum-speed = "high-speed";
+                               phys = <&qusb2phy>;
+                               phy-names = "usb2-phy";
+                               snps,hird-threshold = /bits/ 8 <0>;
+                       };
+               };
+
+               qusb2phy: phy@c012000 {
+                       compatible = "qcom,sdm660-qusb2-phy";
+                       reg = <0x0c012000 0x180>;
+                       #phy-cells = <0>;
+
+                       clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
+                               <&gcc GCC_RX1_USB2_CLKREF_CLK>;
+                       clock-names = "cfg_ahb", "ref";
+
+                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+                       nvmem-cells = <&qusb2_hstx_trim>;
+                       status = "disabled";
+               };
+
+               sdhc_2: sdhci@c084000 {
+                       compatible = "qcom,sdm630-sdhci", "qcom,sdhci-msm-v5";
+                       reg = <0x0c084000 0x1000>;
+                       reg-names = "hc";
+
+                       interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       bus-width = <4>;
+                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+                                       <&gcc GCC_SDCC2_AHB_CLK>,
+                                       <&xo_board>;
+                       clock-names = "core", "iface", "xo";
+
+                       interconnects = <&a2noc 3 &a2noc 10>,
+                                       <&gnoc 0 &cnoc 28>;
+                       operating-points-v2 = <&sdhc2_opp_table>;
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&sdc2_state_on>;
+                       pinctrl-1 = <&sdc2_state_off>;
+                       power-domains = <&rpmpd SDM660_VDDCX>;
+
+                       status = "disabled";
+
+                       sdhc2_opp_table: opp-table {
+                                compatible = "operating-points-v2";
+
+                                opp-50000000 {
+                                       opp-hz = /bits/ 64 <50000000>;
+                                       required-opps = <&rpmpd_opp_low_svs>;
+                                       opp-peak-kBps = <200000 140000>;
+                                       opp-avg-kBps = <130718 133320>;
+                                };
+                                opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmpd_opp_svs>;
+                                       opp-peak-kBps = <250000 160000>;
+                                       opp-avg-kBps = <196078 150000>;
+                                };
+                                opp-200000000 {
+                                       opp-hz = /bits/ 64 <200000000>;
+                                       required-opps = <&rpmpd_opp_nom>;
+                                       opp-peak-kBps = <4096000 4096000>;
+                                       opp-avg-kBps = <1338562 1338562>;
+                                };
+                       };
+               };
+
                sdhc_1: sdhci@c0c4000 {
                        compatible = "qcom,sdm630-sdhci", "qcom,sdhci-msm-v5";
                        reg = <0x0c0c4000 0x1000>,
                                 <&gcc GCC_SDCC1_ICE_CORE_CLK>;
                        clock-names = "core", "iface", "xo", "ice";
 
+                       interconnects = <&a2noc 2 &a2noc 10>,
+                                       <&gnoc 0 &cnoc 27>;
+                       interconnect-names = "sdhc1-ddr", "cpu-sdhc1";
+                       operating-points-v2 = <&sdhc1_opp_table>;
                        pinctrl-names = "default", "sleep";
-                       pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on &sdc1_rclk_on>;
-                       pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off &sdc1_rclk_off>;
+                       pinctrl-0 = <&sdc1_state_on>;
+                       pinctrl-1 = <&sdc1_state_off>;
+                       power-domains = <&rpmpd SDM660_VDDCX>;
 
                        bus-width = <8>;
                        non-removable;
 
                        status = "disabled";
+
+                       sdhc1_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-50000000 {
+                                       opp-hz = /bits/ 64 <50000000>;
+                                       required-opps = <&rpmpd_opp_low_svs>;
+                                       opp-peak-kBps = <200000 140000>;
+                                       opp-avg-kBps = <130718 133320>;
+                               };
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>;
+                                       required-opps = <&rpmpd_opp_svs>;
+                                       opp-peak-kBps = <250000 160000>;
+                                       opp-avg-kBps = <196078 150000>;
+                               };
+                               opp-384000000 {
+                                       opp-hz = /bits/ 64 <384000000>;
+                                       required-opps = <&rpmpd_opp_nom>;
+                                       opp-peak-kBps = <4096000 4096000>;
+                                       opp-avg-kBps = <1338562 1338562>;
+                               };
+                       };
+               };
+
+               mmcc: clock-controller@c8c0000 {
+                       compatible = "qcom,mmcc-sdm630";
+                       reg = <0x0c8c0000 0x40000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       clock-names = "xo",
+                                       "sleep_clk",
+                                       "gpll0",
+                                       "gpll0_div",
+                                       "dsi0pll",
+                                       "dsi0pllbyte",
+                                       "dsi1pll",
+                                       "dsi1pllbyte",
+                                       "dp_link_2x_clk_divsel_five",
+                                       "dp_vco_divided_clk_src_mux";
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
+                                       <&sleep_clk>,
+                                       <&gcc GCC_MMSS_GPLL0_CLK>,
+                                       <&gcc GCC_MMSS_GPLL0_DIV_CLK>,
+                                       <&dsi0_phy 1>,
+                                       <&dsi0_phy 0>,
+                                       <0>,
+                                       <0>,
+                                       <0>,
+                                       <0>;
+               };
+
+               dsi_opp_table: dsi-opp-table {
+                       compatible = "operating-points-v2";
+
+                       opp-131250000 {
+                               opp-hz = /bits/ 64 <131250000>;
+                               required-opps = <&rpmpd_opp_svs>;
+                       };
+
+                       opp-210000000 {
+                               opp-hz = /bits/ 64 <210000000>;
+                               required-opps = <&rpmpd_opp_svs_plus>;
+                       };
+
+                       opp-262500000 {
+                               opp-hz = /bits/ 64 <262500000>;
+                               required-opps = <&rpmpd_opp_nom>;
+                       };
+               };
+
+               mdss: mdss@c900000 {
+                       compatible = "qcom,mdss";
+                       reg = <0x0c900000 0x1000>,
+                             <0x0c9b0000 0x1040>;
+                       reg-names = "mdss_phys", "vbif_phys";
+
+                       power-domains = <&mmcc MDSS_GDSC>;
+
+                       clocks = <&mmcc MDSS_AHB_CLK>,
+                                <&mmcc MDSS_AXI_CLK>,
+                                <&mmcc MDSS_VSYNC_CLK>,
+                                <&mmcc MDSS_MDP_CLK>;
+                       clock-names = "iface",
+                                     "bus",
+                                     "vsync",
+                                     "core";
+
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       status = "disabled";
+
+                       mdp: mdp@c901000 {
+                               compatible = "qcom,mdp5";
+                               reg = <0x0c901000 0x89000>;
+                               reg-names = "mdp_phys";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+
+                               assigned-clocks = <&mmcc MDSS_MDP_CLK>,
+                                                 <&mmcc MDSS_VSYNC_CLK>;
+                               assigned-clock-rates = <300000000>,
+                                                      <19200000>;
+                               clocks = <&mmcc MDSS_AHB_CLK>,
+                                        <&mmcc MDSS_AXI_CLK>,
+                                        <&mmcc MDSS_MDP_CLK>,
+                                        <&mmcc MDSS_VSYNC_CLK>;
+                               clock-names = "iface",
+                                             "bus",
+                                             "core",
+                                             "vsync";
+
+                               interconnects = <&mnoc 2 &bimc 5>,
+                                               <&mnoc 3 &bimc 5>,
+                                               <&gnoc 0 &mnoc 17>;
+                               interconnect-names = "mdp0-mem",
+                                                    "mdp1-mem",
+                                                    "rotator-mem";
+                               iommus = <&mmss_smmu 0>;
+                               operating-points-v2 = <&mdp_opp_table>;
+                               power-domains = <&rpmpd SDM660_VDDCX>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               mdp5_intf1_out: endpoint {
+                                                       remote-endpoint = <&dsi0_in>;
+                                               };
+                                       };
+                               };
+
+                               mdp_opp_table: mdp-opp {
+                                       compatible = "operating-points-v2";
+
+                                       opp-150000000 {
+                                               opp-hz = /bits/ 64 <150000000>;
+                                               opp-peak-kBps = <320000 320000 76800>;
+                                               required-opps = <&rpmpd_opp_low_svs>;
+                                       };
+                                       opp-275000000 {
+                                               opp-hz = /bits/ 64 <275000000>;
+                                               opp-peak-kBps = <6400000 6400000 160000>;
+                                               required-opps = <&rpmpd_opp_svs>;
+                                       };
+                                       opp-300000000 {
+                                               opp-hz = /bits/ 64 <300000000>;
+                                               opp-peak-kBps = <6400000 6400000 190000>;
+                                               required-opps = <&rpmpd_opp_svs_plus>;
+                                       };
+                                       opp-330000000 {
+                                               opp-hz = /bits/ 64 <330000000>;
+                                               opp-peak-kBps = <6400000 6400000 240000>;
+                                               required-opps = <&rpmpd_opp_nom>;
+                                       };
+                                       opp-412500000 {
+                                               opp-hz = /bits/ 64 <412500000>;
+                                               opp-peak-kBps = <6400000 6400000 320000>;
+                                               required-opps = <&rpmpd_opp_turbo>;
+                                       };
+                               };
+                       };
+
+                       dsi0: dsi@c994000 {
+                               compatible = "qcom,mdss-dsi-ctrl";
+                               reg = <0x0c994000 0x400>;
+                               reg-names = "dsi_ctrl";
+
+                               operating-points-v2 = <&dsi_opp_table>;
+                               power-domains = <&rpmpd SDM660_VDDCX>;
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <4 IRQ_TYPE_LEVEL_HIGH>;
+
+                               assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
+                                                 <&mmcc PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&dsi0_phy 0>,
+                                                        <&dsi0_phy 1>;
+
+                               clocks = <&mmcc MDSS_MDP_CLK>,
+                                        <&mmcc MDSS_BYTE0_CLK>,
+                                        <&mmcc MDSS_BYTE0_INTF_CLK>,
+                                        <&mmcc MNOC_AHB_CLK>,
+                                        <&mmcc MDSS_AHB_CLK>,
+                                        <&mmcc MDSS_AXI_CLK>,
+                                        <&mmcc MISC_AHB_CLK>,
+                                        <&mmcc MDSS_PCLK0_CLK>,
+                                        <&mmcc MDSS_ESC0_CLK>;
+                               clock-names = "mdp_core",
+                                             "byte",
+                                             "byte_intf",
+                                             "mnoc",
+                                             "iface",
+                                             "bus",
+                                             "core_mmss",
+                                             "pixel",
+                                             "core";
+
+                               phys = <&dsi0_phy>;
+                               phy-names = "dsi";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               dsi0_in: endpoint {
+                                                       remote-endpoint = <&mdp5_intf1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               dsi0_out: endpoint {
+                                               };
+                                       };
+                               };
+                       };
+
+                       dsi0_phy: dsi-phy@c994400 {
+                               compatible = "qcom,dsi-phy-14nm-660";
+                               reg = <0x0c994400 0x100>,
+                                     <0x0c994500 0x300>,
+                                     <0x0c994800 0x188>;
+                               reg-names = "dsi_phy",
+                                           "dsi_phy_lane",
+                                           "dsi_pll";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               clocks = <&mmcc MDSS_AHB_CLK>, <&xo_board>;
+                               clock-names = "iface", "ref";
+                       };
                };
 
                blsp1_dma: dma-controller@c144000 {
                                        <&gcc GCC_BLSP1_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp1_dma 4>, <&blsp1_dma 5>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c1_default>;
                                 <&gcc GCC_BLSP1_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp1_dma 6>, <&blsp1_dma 7>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c2_default>;
                                 <&gcc GCC_BLSP1_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp1_dma 8>, <&blsp1_dma 9>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c3_default>;
                                 <&gcc GCC_BLSP1_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp1_dma 10>, <&blsp1_dma 11>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c4_default>;
                        dmas = <&blsp2_dma 0>, <&blsp2_dma 1>;
                        dma-names = "tx", "rx";
                        pinctrl-names = "default", "sleep";
-                       pinctrl-0 = <&blsp2_uart1_tx_active &blsp2_uart1_rxcts_active
-                               &blsp2_uart1_rfr_active>;
-                       pinctrl-1 = <&blsp2_uart1_tx_sleep &blsp2_uart1_rxcts_sleep
-                               &blsp2_uart1_rfr_sleep>;
+                       pinctrl-0 = <&blsp2_uart1_default>;
+                       pinctrl-1 = <&blsp2_uart1_sleep>;
                        status = "disabled";
                };
 
                                 <&gcc GCC_BLSP2_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp2_dma 4>, <&blsp2_dma 5>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c5_default>;
                                 <&gcc GCC_BLSP2_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp2_dma 6>, <&blsp2_dma 7>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c6_default>;
                                 <&gcc GCC_BLSP2_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp2_dma 8>, <&blsp2_dma 9>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c7_default>;
                                 <&gcc GCC_BLSP2_AHB_CLK>;
                        clock-names = "core", "iface";
                        clock-frequency = <400000>;
+                       dmas = <&blsp2_dma 10>, <&blsp2_dma 11>;
+                       dma-names = "tx", "rx";
 
                        pinctrl-names = "default", "sleep";
                        pinctrl-0 = <&i2c8_default>;
                        status = "disabled";
                };
 
+               imem@146bf000 {
+                       compatible = "simple-mfd";
+                       reg = <0x146bf000 0x1000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       ranges = <0 0x146bf000 0x1000>;
+
+                       pil-reloc@94c {
+                               compatible = "qcom,pil-reloc-info";
+                               reg = <0x94c 0xc8>;
+                       };
+               };
+
+               camss: camss@ca00000 {
+                       compatible = "qcom,sdm660-camss";
+                       reg = <0x0c824000 0x1000>,
+                             <0x0ca00120 0x4>,
+                             <0x0c825000 0x1000>,
+                             <0x0ca00124 0x4>,
+                             <0x0c826000 0x1000>,
+                             <0x0ca00128 0x4>,
+                             <0x0ca30000 0x100>,
+                             <0x0ca30400 0x100>,
+                             <0x0ca30800 0x100>,
+                             <0x0ca30c00 0x100>,
+                             <0x0ca31000 0x500>,
+                             <0x0ca00020 0x10>,
+                             <0x0ca10000 0x1000>,
+                             <0x0ca14000 0x1000>;
+                       reg-names = "csiphy0",
+                                   "csiphy0_clk_mux",
+                                   "csiphy1",
+                                   "csiphy1_clk_mux",
+                                   "csiphy2",
+                                   "csiphy2_clk_mux",
+                                   "csid0",
+                                   "csid1",
+                                   "csid2",
+                                   "csid3",
+                                   "ispif",
+                                   "csi_clk_mux",
+                                   "vfe0",
+                                   "vfe1";
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 79 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 80 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "csiphy0",
+                                         "csiphy1",
+                                         "csiphy2",
+                                         "csid0",
+                                         "csid1",
+                                         "csid2",
+                                         "csid3",
+                                         "ispif",
+                                         "vfe0",
+                                         "vfe1";
+                       clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
+                               <&mmcc THROTTLE_CAMSS_AXI_CLK>,
+                               <&mmcc CAMSS_ISPIF_AHB_CLK>,
+                               <&mmcc CAMSS_CSI0PHYTIMER_CLK>,
+                               <&mmcc CAMSS_CSI1PHYTIMER_CLK>,
+                               <&mmcc CAMSS_CSI2PHYTIMER_CLK>,
+                               <&mmcc CAMSS_CSI0_AHB_CLK>,
+                               <&mmcc CAMSS_CSI0_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID0_CLK>,
+                               <&mmcc CAMSS_CSI0PIX_CLK>,
+                               <&mmcc CAMSS_CSI0RDI_CLK>,
+                               <&mmcc CAMSS_CSI1_AHB_CLK>,
+                               <&mmcc CAMSS_CSI1_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID1_CLK>,
+                               <&mmcc CAMSS_CSI1PIX_CLK>,
+                               <&mmcc CAMSS_CSI1RDI_CLK>,
+                               <&mmcc CAMSS_CSI2_AHB_CLK>,
+                               <&mmcc CAMSS_CSI2_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID2_CLK>,
+                               <&mmcc CAMSS_CSI2PIX_CLK>,
+                               <&mmcc CAMSS_CSI2RDI_CLK>,
+                               <&mmcc CAMSS_CSI3_AHB_CLK>,
+                               <&mmcc CAMSS_CSI3_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID3_CLK>,
+                               <&mmcc CAMSS_CSI3PIX_CLK>,
+                               <&mmcc CAMSS_CSI3RDI_CLK>,
+                               <&mmcc CAMSS_AHB_CLK>,
+                               <&mmcc CAMSS_VFE0_CLK>,
+                               <&mmcc CAMSS_CSI_VFE0_CLK>,
+                               <&mmcc CAMSS_VFE0_AHB_CLK>,
+                               <&mmcc CAMSS_VFE0_STREAM_CLK>,
+                               <&mmcc CAMSS_VFE1_CLK>,
+                               <&mmcc CAMSS_CSI_VFE1_CLK>,
+                               <&mmcc CAMSS_VFE1_AHB_CLK>,
+                               <&mmcc CAMSS_VFE1_STREAM_CLK>,
+                               <&mmcc CAMSS_VFE_VBIF_AHB_CLK>,
+                               <&mmcc CAMSS_VFE_VBIF_AXI_CLK>,
+                               <&mmcc CSIPHY_AHB2CRIF_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID0_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID1_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID2_CLK>,
+                               <&mmcc CAMSS_CPHY_CSID3_CLK>;
+                       clock-names = "top_ahb",
+                               "throttle_axi",
+                               "ispif_ahb",
+                               "csiphy0_timer",
+                               "csiphy1_timer",
+                               "csiphy2_timer",
+                               "csi0_ahb",
+                               "csi0",
+                               "csi0_phy",
+                               "csi0_pix",
+                               "csi0_rdi",
+                               "csi1_ahb",
+                               "csi1",
+                               "csi1_phy",
+                               "csi1_pix",
+                               "csi1_rdi",
+                               "csi2_ahb",
+                               "csi2",
+                               "csi2_phy",
+                               "csi2_pix",
+                               "csi2_rdi",
+                               "csi3_ahb",
+                               "csi3",
+                               "csi3_phy",
+                               "csi3_pix",
+                               "csi3_rdi",
+                               "ahb",
+                               "vfe0",
+                               "csi_vfe0",
+                               "vfe0_ahb",
+                               "vfe0_stream",
+                               "vfe1",
+                               "csi_vfe1",
+                               "vfe1_ahb",
+                               "vfe1_stream",
+                               "vfe_ahb",
+                               "vfe_axi",
+                               "csiphy_ahb2crif",
+                               "cphy_csid0",
+                               "cphy_csid1",
+                               "cphy_csid2",
+                               "cphy_csid3";
+                       interconnects = <&mnoc 5 &bimc 5>;
+                       interconnect-names = "vfe-mem";
+                       iommus = <&mmss_smmu 0xc00>,
+                                <&mmss_smmu 0xc01>,
+                                <&mmss_smmu 0xc02>,
+                                <&mmss_smmu 0xc03>;
+                       power-domains = <&mmcc CAMSS_VFE0_GDSC>,
+                                       <&mmcc CAMSS_VFE1_GDSC>;
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
+               cci: cci@ca0c000 {
+                       compatible = "qcom,msm8996-cci";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x0ca0c000 0x1000>;
+                       interrupts = <GIC_SPI 295 IRQ_TYPE_EDGE_RISING>;
+
+                       assigned-clocks = <&mmcc CAMSS_CCI_AHB_CLK>,
+                                         <&mmcc CAMSS_CCI_CLK>;
+                       assigned-clock-rates = <80800000>, <37500000>;
+                       clocks = <&mmcc CAMSS_TOP_AHB_CLK>,
+                                <&mmcc CAMSS_CCI_AHB_CLK>,
+                                <&mmcc CAMSS_CCI_CLK>,
+                                <&mmcc CAMSS_AHB_CLK>;
+                       clock-names = "camss_top_ahb",
+                                     "cci_ahb",
+                                     "cci",
+                                     "camss_ahb";
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cci0_default &cci1_default>;
+                       power-domains = <&mmcc CAMSS_TOP_GDSC>;
+                       status = "disabled";
+
+                       cci_i2c0: i2c-bus@0 {
+                               reg = <0>;
+                               clock-frequency = <400000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       cci_i2c1: i2c-bus@1 {
+                               reg = <1>;
+                               clock-frequency = <400000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
                mmss_smmu: iommu@cd00000 {
                        compatible = "qcom,sdm630-smmu-v2", "qcom,smmu-v2";
                        reg = <0x0cd00000 0x40000>;
-                       #iommu-cells = <1>;
 
+                       clocks = <&mmcc MNOC_AHB_CLK>,
+                                <&mmcc BIMC_SMMU_AHB_CLK>,
+                                <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK>,
+                                <&mmcc BIMC_SMMU_AXI_CLK>;
+                       clock-names = "iface-mm", "iface-smmu",
+                                     "bus-mm", "bus-smmu";
                        #global-interrupts = <2>;
+                       #iommu-cells = <1>;
+
                        interrupts =
                                <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
                                <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
                        status = "disabled";
                };
 
+               adsp_pil: remoteproc@15700000 {
+                       compatible = "qcom,sdm660-adsp-pas";
+                       reg = <0x15700000 0x4040>;
+
+                       interrupts-extended =
+                               <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
+                               <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                               <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                               <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                               <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog", "fatal", "ready",
+                                         "handover", "stop-ack";
+
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
+                       clock-names = "xo";
+
+                       memory-region = <&adsp_region>;
+                       power-domains = <&rpmpd SDM660_VDDCX>;
+                       power-domain-names = "cx";
+
+                       qcom,smem-states = <&adsp_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       glink-edge {
+                               interrupts = <GIC_SPI 157 IRQ_TYPE_EDGE_RISING>;
+
+                               label = "lpass";
+                               mboxes = <&apcs_glb 9>;
+                               qcom,remote-pid = <2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               apr {
+                                       compatible = "qcom,apr-v2";
+                                       qcom,glink-channels = "apr_audio_svc";
+                                       qcom,apr-domain = <APR_DOMAIN_ADSP>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       q6core {
+                                               reg = <APR_SVC_ADSP_CORE>;
+                                               compatible = "qcom,q6core";
+                                       };
+
+                                       q6afe: apr-service@4 {
+                                               compatible = "qcom,q6afe";
+                                               reg = <APR_SVC_AFE>;
+                                               q6afedai: dais {
+                                                       compatible = "qcom,q6afe-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+                                       };
+
+                                       q6asm: apr-service@7 {
+                                               compatible = "qcom,q6asm";
+                                               reg = <APR_SVC_ASM>;
+                                               q6asmdai: dais {
+                                                       compatible = "qcom,q6asm-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                                       iommus = <&lpass_smmu 1>;
+                                               };
+                                       };
+
+                                       q6adm: apr-service@8 {
+                                               compatible = "qcom,q6adm";
+                                               reg = <APR_SVC_ADM>;
+                                               q6routing: routing {
+                                                       compatible = "qcom,q6adm-routing";
+                                                       #sound-dai-cells = <0>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+
+               gnoc: interconnect@17900000 {
+                       compatible = "qcom,sdm660-gnoc";
+                       reg = <0x17900000 0xe000>;
+                       #interconnect-cells = <1>;
+                       /*
+                        * This one apparently features no clocks,
+                        * so let's not mess with the driver needlessly
+                        */
+                       clock-names = "bus", "bus_a";
+                       clocks = <&xo_board>, <&xo_board>;
+               };
+
                apcs_glb: mailbox@17911000 {
                        compatible = "qcom,sdm660-apcs-hmss-global";
                        reg = <0x17911000 0x1000>;
                #hwlock-cells = <1>;
        };
 
+       sound: sound {
+       };
+
+       thermal-zones {
+               aoss-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 0>;
+
+                       trips {
+                               aoss_alert0: trip-point0 {
+                                       temperature = <105000>;
+                                       hysteresis = <1000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               cpuss0-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 1>;
+
+                       trips {
+                               cpuss0_alert0: trip-point0 {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               cpuss1-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 2>;
+
+                       trips {
+                               cpuss1_alert0: trip-point0 {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+
+               cpu0-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 3>;
+
+                       trips {
+                               cpu0_alert0: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               cpu0_crit: cpu_crit {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 4>;
+
+                       trips {
+                               cpu1_alert0: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               cpu1_crit: cpu_crit {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu2-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 5>;
+
+                       trips {
+                               cpu2_alert0: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               cpu2_crit: cpu_crit {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu3-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 6>;
+
+                       trips {
+                               cpu3_alert0: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               cpu3_crit: cpu_crit {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               /*
+                * According to what downstream DTS says,
+                * the entire power efficient cluster has
+                * only a single thermal sensor.
+                */
+
+               pwr-cluster-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 7>;
+
+                       trips {
+                               pwr_cluster_alert0: trip-point0 {
+                                       temperature = <70000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               pwr_cluster_crit: cpu_crit {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpu-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+
+                       thermal-sensors = <&tsens 8>;
+
+                       trips {
+                               gpu_alert0: trip-point0 {
+                                       temperature = <90000>;
+                                       hysteresis = <1000>;
+                                       type = "hot";
+                               };
+                       };
+               };
+       };
+
        timer {
                compatible = "arm,armv8-timer";
                interrupts = <GIC_PPI 1 0xf08>,
index 7c0830e..bba1c2b 100644 (file)
@@ -5,16 +5,20 @@
 
 /dts-v1/;
 
-/* Mermaid uses sdm636, but it's different ever so slightly
- * that we can ignore it for the time being. Sony also commonizes
- * the Ganges platform as a whole in downstream kernels.
- */
-#include "sdm630-sony-xperia-ganges.dtsi"
+#include "sdm630-sony-xperia-ganges-kirin.dts"
+#include "sdm636.dtsi"
 
 / {
        model = "Sony Xperia 10 Plus";
        compatible = "sony,mermaid-row", "qcom,sdm636";
 
+       /* SDM636 v1 */
        qcom,msm-id = <345 0>;
        qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00 0x1001b 0x102001a 0x00 0x00>;
 };
+
+&sdc2_state_on {
+       pinconf-clk {
+               drive-strength = <14>;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm636.dtsi b/arch/arm64/boot/dts/qcom/sdm636.dtsi
new file mode 100644 (file)
index 0000000..ae15d81
--- /dev/null
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
+ * Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
+ * Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
+ */
+
+#include "sdm660.dtsi"
+
+/*
+ * According to the downstream DTS,
+ * 636 is basically a 660 except for
+ * different CPU frequencies, Adreno
+ * 509 instead of 512 and lack of
+ * turing IP. These differences will
+ * be addressed when the aforementioned
+ * peripherals will be enabled upstream.
+ */
+
+&adreno_gpu {
+       compatible = "qcom,adreno-509.0", "qcom,adreno";
+       /* Adreno 509 shares the frequency table with 512 */
+};
index 76533e8..3e677fb 100644 (file)
@@ -37,8 +37,6 @@
 
 &blsp1_uart2 {
        status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart_console_active>;
 };
 
 &tlmm {
index 4abbdd0..eccf6fd 100644 (file)
 /*
  * Copyright (c) 2018, Craig Tatlor.
  * Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com>
+ * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
+ * Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
+ * Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
  */
 
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/clock/qcom,gcc-sdm660.h>
+#include "sdm630.dtsi"
 
-/ {
-       interrupt-parent = <&intc>;
+&adreno_gpu {
+       compatible = "qcom,adreno-512.0", "qcom,adreno";
+       operating-points-v2 = <&gpu_sdm660_opp_table>;
 
-       #address-cells = <2>;
-       #size-cells = <2>;
+       gpu_sdm660_opp_table: opp-table {
+               compatible  = "operating-points-v2";
 
-       chosen { };
+               /*
+                * 775MHz is only available on the highest speed bin
+                * Though it cannot be used for now due to interconnect
+                * framework not supporting multiple frequencies
+                * at the same opp-level
 
-       clocks {
-               xo_board: xo_board {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <19200000>;
-                       clock-output-names = "xo_board";
+               opp-750000000 {
+                       opp-hz = /bits/ 64 <750000000>;
+                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                       opp-peak-kBps = <5412000>;
+                       opp-supported-hw = <0xCHECKME>;
                };
 
-               sleep_clk: sleep_clk {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <32764>;
-                       clock-output-names = "sleep_clk";
-               };
-       };
+               * These OPPs are correct, but we are lacking support for the
+               * GPU regulator. Hence, disable them for now to prevent the
+               * platform from hanging on high graphics loads.
 
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               CPU0: cpu@100 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x100>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <1024>;
-                       next-level-cache = <&L2_1>;
-                       L2_1: l2-cache {
-                               compatible = "cache";
-                               cache-level = <2>;
-                       };
-                       L1_I_100: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_100: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-700000000 {
+                       opp-hz = /bits/ 64 <700000000>;
+                       opp-level = <RPM_SMD_LEVEL_TURBO>;
+                       opp-peak-kBps = <5184000>;
+                       opp-supported-hw = <0xFF>;
                };
 
-               CPU1: cpu@101 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x101>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <1024>;
-                       next-level-cache = <&L2_1>;
-                       L1_I_101: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_101: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-647000000 {
+                       opp-hz = /bits/ 64 <647000000>;
+                       opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
+                       opp-peak-kBps = <4068000>;
+                       opp-supported-hw = <0xFF>;
                };
 
-               CPU2: cpu@102 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x102>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <1024>;
-                       next-level-cache = <&L2_1>;
-                       L1_I_102: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_102: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-588000000 {
+                       opp-hz = /bits/ 64 <588000000>;
+                       opp-level = <RPM_SMD_LEVEL_NOM>;
+                       opp-peak-kBps = <3072000>;
+                       opp-supported-hw = <0xFF>;
                };
 
-               CPU3: cpu@103 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x103>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <1024>;
-                       next-level-cache = <&L2_1>;
-                       L1_I_103: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_103: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-465000000 {
+                       opp-hz = /bits/ 64 <465000000>;
+                       opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
+                       opp-peak-kBps = <2724000>;
+                       opp-supported-hw = <0xFF>;
                };
 
-               CPU4: cpu@0 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x0>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <640>;
-                       next-level-cache = <&L2_0>;
-                       L2_0: l2-cache {
-                               compatible = "cache";
-                               cache-level = <2>;
-                       };
-                       L1_I_0: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_0: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-370000000 {
+                       opp-hz = /bits/ 64 <370000000>;
+                       opp-level = <RPM_SMD_LEVEL_SVS>;
+                       opp-peak-kBps = <2188000>;
+                       opp-supported-hw = <0xFF>;
                };
+               */
 
-               CPU5: cpu@1 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x1>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <640>;
-                       next-level-cache = <&L2_0>;
-                       L1_I_1: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_1: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-266000000 {
+                       opp-hz = /bits/ 64 <266000000>;
+                       opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
+                       opp-peak-kBps = <1648000>;
+                       opp-supported-hw = <0xFF>;
                };
 
-               CPU6: cpu@2 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x2>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <640>;
-                       next-level-cache = <&L2_0>;
-                       L1_I_2: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_2: l1-dcache {
-                               compatible = "cache";
-                       };
+               opp-160000000 {
+                       opp-hz = /bits/ 64 <160000000>;
+                       opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
+                       opp-peak-kBps = <1200000>;
+                       opp-supported-hw = <0xFF>;
                };
+       };
+};
 
-               CPU7: cpu@3 {
-                       device_type = "cpu";
-                       compatible = "qcom,kryo260";
-                       reg = <0x0 0x3>;
-                       enable-method = "psci";
-                       capacity-dmips-mhz = <640>;
-                       next-level-cache = <&L2_0>;
-                       L1_I_3: l1-icache {
-                               compatible = "cache";
-                       };
-                       L1_D_3: l1-dcache {
-                               compatible = "cache";
-                       };
-               };
-
-               cpu-map {
-                       cluster0 {
-                               core0 {
-                                       cpu = <&CPU4>;
-                               };
-
-                               core1 {
-                                       cpu = <&CPU5>;
-                               };
-
-                               core2 {
-                                       cpu = <&CPU6>;
-                               };
-
-                               core3 {
-                                       cpu = <&CPU7>;
-                               };
-                       };
-
-                       cluster1 {
-                               core0 {
-                                       cpu = <&CPU0>;
-                               };
+&CPU0 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <1024>;
+       /delete-property/ operating-points-v2;
+};
 
-                               core1 {
-                                       cpu = <&CPU1>;
-                               };
+&CPU1 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <1024>;
+       /delete-property/ operating-points-v2;
+};
 
-                               core2 {
-                                       cpu = <&CPU2>;
-                               };
+&CPU2 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <1024>;
+       /delete-property/ operating-points-v2;
+};
 
-                               core3 {
-                                       cpu = <&CPU3>;
-                               };
-                       };
-               };
-       };
+&CPU3 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <1024>;
+       /delete-property/ operating-points-v2;
+};
 
-       firmware {
-               scm {
-                       compatible = "qcom,scm";
-               };
-       };
+&CPU4 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <640>;
+       /delete-property/ operating-points-v2;
+};
 
-       memory {
-               device_type = "memory";
-               /* We expect the bootloader to fill in the reg */
-               reg = <0 0 0 0>;
-       };
+&CPU5 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <640>;
+       /delete-property/ operating-points-v2;
+};
 
-       psci {
-               compatible = "arm,psci-1.0";
-               method = "smc";
-       };
+&CPU6 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <640>;
+       /delete-property/ operating-points-v2;
+};
 
-       timer {
-               compatible = "arm,armv8-timer";
-               interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 3 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 0 IRQ_TYPE_LEVEL_LOW>;
-       };
+&CPU7 {
+       compatible = "qcom,kryo260";
+       capacity-dmips-mhz = <640>;
+       /delete-property/ operating-points-v2;
+};
 
-       soc: soc {
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0 0 0 0xffffffff>;
-               compatible = "simple-bus";
-
-               gcc: clock-controller@100000 {
-                       compatible = "qcom,gcc-sdm660";
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-                       reg = <0x00100000 0x94000>;
-               };
+&gcc {
+       compatible = "qcom,gcc-sdm660";
+};
 
-               tlmm: pinctrl@3100000 {
-                       compatible = "qcom,sdm660-pinctrl";
-                       reg = <0x03100000 0x400000>,
-                             <0x03500000 0x400000>,
-                             <0x03900000 0x400000>;
-                       reg-names = "south", "center", "north";
-                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
-                       gpio-controller;
-                       gpio-ranges = <&tlmm 0 0 114>;
-                       #gpio-cells = <2>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-
-                       uart_console_active: uart_console_active {
-                               pinmux {
-                                       pins = "gpio4", "gpio5";
-                                       function = "blsp_uart2";
-                               };
+&gpucc {
+       compatible = "qcom,gpucc-sdm660";
+};
 
-                               pinconf {
-                                       pins = "gpio4", "gpio5";
-                                       drive-strength = <2>;
-                                       bias-disable;
-                               };
+&mdp {
+       ports {
+               port@1 {
+                       reg = <1>;
+                       mdp5_intf2_out: endpoint {
+                               remote-endpoint = <&dsi1_in>;
                        };
                };
+       };
+};
 
-               spmi_bus: spmi@800f000 {
-                       compatible = "qcom,spmi-pmic-arb";
-                       reg = <0x0800f000 0x1000>,
-                             <0x08400000 0x1000000>,
-                             <0x09400000 0x1000000>,
-                             <0x0a400000 0x220000>,
-                             <0x0800a000 0x3000>;
-                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
-                       interrupt-names = "periph_irq";
-                       interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
-                       qcom,ee = <0>;
-                       qcom,channel = <0>;
-                       #address-cells = <2>;
+&mdss {
+       dsi1: dsi@c996000 {
+               compatible = "qcom,mdss-dsi-ctrl";
+               reg = <0x0c996000 0x400>;
+               reg-names = "dsi_ctrl";
+
+               /* DSI1 shares the OPP table with DSI0 */
+               operating-points-v2 = <&dsi_opp_table>;
+               power-domains = <&rpmpd SDM660_VDDCX>;
+
+               interrupt-parent = <&mdss>;
+               interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+
+               assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
+                                       <&mmcc PCLK1_CLK_SRC>;
+               assigned-clock-parents = <&dsi1_phy 0>,
+                                               <&dsi1_phy 1>;
+
+               clocks = <&mmcc MDSS_MDP_CLK>,
+                               <&mmcc MDSS_BYTE1_CLK>,
+                               <&mmcc MDSS_BYTE1_INTF_CLK>,
+                               <&mmcc MNOC_AHB_CLK>,
+                               <&mmcc MDSS_AHB_CLK>,
+                               <&mmcc MDSS_AXI_CLK>,
+                               <&mmcc MISC_AHB_CLK>,
+                               <&mmcc MDSS_PCLK1_CLK>,
+                               <&mmcc MDSS_ESC1_CLK>;
+               clock-names = "mdp_core",
+                                       "byte",
+                                       "byte_intf",
+                                       "mnoc",
+                                       "iface",
+                                       "bus",
+                                       "core_mmss",
+                                       "pixel",
+                                       "core";
+
+               phys = <&dsi1_phy>;
+               phy-names = "dsi";
+
+               ports {
+                       #address-cells = <1>;
                        #size-cells = <0>;
-                       interrupt-controller;
-                       #interrupt-cells = <4>;
-                       cell-index = <0>;
-               };
 
-               blsp1_uart2: serial@c170000 {
-                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
-                       reg = <0x0c170000 0x1000>;
-                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
-                                <&gcc GCC_BLSP1_AHB_CLK>;
-                       clock-names = "core", "iface";
-                       status = "disabled";
-               };
-
-               timer@17920000 {
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges;
-                       compatible = "arm,armv7-timer-mem";
-                       reg = <0x17920000 0x1000>;
-
-                       frame@17921000 {
-                               frame-number = <0>;
-                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17921000 0x1000>,
-                                     <0x17922000 0x1000>;
+                       port@0 {
+                               reg = <0>;
+                               dsi1_in: endpoint {
+                                       remote-endpoint = <&mdp5_intf2_out>;
+                               };
                        };
 
-                       frame@17923000 {
-                               frame-number = <1>;
-                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17923000 0x1000>;
-                               status = "disabled";
+                       port@1 {
+                               reg = <1>;
+                               dsi1_out: endpoint {
+                               };
                        };
+               };
+       };
 
-                       frame@17924000 {
-                               frame-number = <2>;
-                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17924000 0x1000>;
-                               status = "disabled";
-                       };
+       dsi1_phy: dsi-phy@c996400 {
+               compatible = "qcom,dsi-phy-14nm-660";
+               reg = <0x0c996400 0x100>,
+                               <0x0c996500 0x300>,
+                               <0x0c996800 0x188>;
+               reg-names = "dsi_phy",
+                               "dsi_phy_lane",
+                               "dsi_pll";
 
-                       frame@17925000 {
-                               frame-number = <3>;
-                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17925000 0x1000>;
-                               status = "disabled";
-                       };
+               #clock-cells = <1>;
+               #phy-cells = <0>;
 
-                       frame@17926000 {
-                               frame-number = <4>;
-                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17926000 0x1000>;
-                               status = "disabled";
-                       };
+               clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
+               clock-names = "iface", "ref";
+       };
+};
 
-                       frame@17927000 {
-                               frame-number = <5>;
-                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17927000 0x1000>;
-                               status = "disabled";
-                       };
+&mmcc {
+       compatible = "qcom,mmcc-sdm660";
+       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
+                       <&sleep_clk>,
+                       <&gcc GCC_MMSS_GPLL0_CLK>,
+                       <&gcc GCC_MMSS_GPLL0_DIV_CLK>,
+                       <&dsi0_phy 1>,
+                       <&dsi0_phy 0>,
+                       <&dsi1_phy 1>,
+                       <&dsi1_phy 0>,
+                       <0>,
+                       <0>;
+};
 
-                       frame@17928000 {
-                               frame-number = <6>;
-                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
-                               reg = <0x17928000 0x1000>;
-                               status = "disabled";
-                       };
-               };
+&tlmm {
+       compatible = "qcom,sdm660-pinctrl";
+};
 
-               intc: interrupt-controller@17a00000 {
-                       compatible = "arm,gic-v3";
-                       reg = <0x17a00000 0x10000>,
-                             <0x17b00000 0x100000>;
-                       #interrupt-cells = <3>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges;
-                       interrupt-controller;
-                       #redistributor-regions = <1>;
-                       redistributor-stride = <0x0 0x20000>;
-                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
-               };
-       };
+&tsens {
+       #qcom,sensors = <14>;
 };
index 91ede92..52dd7a8 100644 (file)
 
        qcom,dual-dsi-mode;
 
+       /* DSI1 is slave, so use DSI0 clocks */
+       assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
+
        ports {
                port@1 {
                        endpoint {
index eb6b1d1..d435552 100644 (file)
 
 / {
        aliases {
+               serial0 = &uart9;
                hsuart0 = &uart6;
        };
 
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
                label = "Volume keys";
        status = "okay";
 
        memory-region = <&ipa_fw_mem>;
+       firmware-name = "qcom/sdm845/oneplus6/ipa_fws.mbn";
 };
 
 &mdss {
        };
 };
 
+&uart9 {
+       label = "LS-UART1";
+       status = "okay";
+};
+
 &ufs_mem_hc {
        status = "okay";
 
index 0a86fe7..6d7172e 100644 (file)
                        no-map;
                };
 
-               ipa_fw_mem: memory@8c400000 {
-                       reg = <0 0x8c400000 0 0x10000>;
+               wlan_msa_mem: memory@8c400000 {
+                       reg = <0 0x8c400000 0 0x100000>;
                        no-map;
                };
 
-               ipa_gsi_mem: memory@8c410000 {
-                       reg = <0 0x8c410000 0 0x5000>;
+               gpu_mem: memory@8c515000 {
+                       reg = <0 0x8c515000 0 0x2000>;
                        no-map;
                };
 
-               gpu_mem: memory@8c415000 {
-                       reg = <0 0x8c415000 0 0x2000>;
+               ipa_fw_mem: memory@8c517000 {
+                       reg = <0 0x8c517000 0 0x5a000>;
                        no-map;
                };
 
-               adsp_mem: memory@8c500000 {
-                       reg = <0 0x8c500000 0 0x1a00000>;
-                       no-map;
-               };
-
-               wlan_msa_mem: memory@8df00000 {
-                       reg = <0 0x8df00000 0 0x100000>;
+               adsp_mem: memory@8c600000 {
+                       reg = <0 0x8c600000 0 0x1a00000>;
                        no-map;
                };
 
                        power-domains = <&dispcc MDSS_GDSC>;
 
                        clocks = <&gcc GCC_DISP_AHB_CLK>,
-                                <&gcc GCC_DISP_AXI_CLK>,
                                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
-                       clock-names = "iface", "bus", "core";
+                       clock-names = "iface", "core";
 
                        assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>;
                        assigned-clock-rates = <300000000>;
                                      <0 0x0aeb0000 0 0x2008>;
                                reg-names = "mdp", "vbif";
 
-                               clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                               clocks = <&gcc GCC_DISP_AXI_CLK>,
+                                        <&dispcc DISP_CC_MDSS_AHB_CLK>,
                                         <&dispcc DISP_CC_MDSS_AXI_CLK>,
                                         <&dispcc DISP_CC_MDSS_MDP_CLK>,
                                         <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
-                               clock-names = "iface", "bus", "core", "vsync";
+                               clock-names = "gcc-bus", "iface", "bus", "core", "vsync";
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>,
                                                  <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
                                              "core",
                                              "iface",
                                              "bus";
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
+
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SDM845_CX>;
 
                                              "core",
                                              "iface",
                                              "bus";
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
+
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SDM845_CX>;
 
index d7591a4..385e502 100644 (file)
        };
 };
 
+&ipa {
+       status = "okay";
+       memory-region = <&ipa_fw_mem>;
+};
+
 &mdss {
        status = "okay";
 };
diff --git a/arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts b/arch/arm64/boot/dts/qcom/sm6125-sony-xperia-seine-pdx201.dts
new file mode 100644 (file)
index 0000000..58b6b27
--- /dev/null
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Martin Botka <martin.botka@somainline.org>
+ */
+
+/dts-v1/;
+
+#include "sm6125.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/gpio-keys.h>
+
+/ {
+       /* required for bootloader to select correct board */
+       qcom,msm-id = <394 0x10000>; /* sm6125 v1 */
+       qcom,board-id = <34 0>;
+
+       model = "Sony Xperia 10 II";
+       compatible = "sony,pdx201", "qcom,sm6125";
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer0: framebuffer@5c000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0x5c000000 0 (2520 * 1080 * 4)>;
+                       width = <1080>;
+                       height = <2520>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       extcon_usb: extcon-usb {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&tlmm 102 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-keys {
+               status = "okay";
+               compatible = "gpio-keys";
+               input-name = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+
+               vol-dn {
+                       label = "Volume Down";
+                       gpios = <&tlmm 47 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <1>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       gpio-key,wakeup;
+                       debounce-interval = <15>;
+               };
+       };
+
+       reserved_memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               debug_mem: memory@ffb00000 {
+                       reg = <0x0 0xffb00000 0x0 0xc0000>;
+                       no-map;
+               };
+
+               last_log_mem: memory@ffbc0000 {
+                       reg = <0x0 0xffbc0000 0x0 0x80000>;
+                       no-map;
+               };
+
+               pstore_mem: ramoops@ffc00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0xffc40000 0x0 0xc0000>;
+                       record-size = <0x1000>;
+                       console-size = <0x40000>;
+                       msg-size = <0x20000 0x20000>;
+               };
+
+               cmdline_mem: memory@ffd00000 {
+                       reg = <0x0 0xffd40000 0x0 0x1000>;
+                       no-map;
+               };
+       };
+};
+
+&hsusb_phy1 {
+       status = "okay";
+};
+
+&sdc2_state_off {
+       sd-cd {
+               pins = "gpio98";
+               bias-disable;
+               drive-strength = <2>;
+       };
+};
+
+&sdhc_1 {
+       status = "okay";
+};
+
+&tlmm {
+       gpio-reserved-ranges = <22 2>, <28 6>;
+
+       sdc2_state_on: sdc2-on {
+               clk {
+                       pins = "sdc2_clk";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+
+               cmd {
+                       pins = "sdc2_cmd";
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+
+               data {
+                       pins = "sdc2_data";
+                       bias-pull-up;
+                       drive-strength = <10>;
+               };
+
+               sd-cd {
+                       pins = "gpio98";
+                       bias-pull-up;
+                       drive-strength = <2>;
+               };
+       };
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       extcon = <&extcon_usb>;
+};
diff --git a/arch/arm64/boot/dts/qcom/sm6125.dtsi b/arch/arm64/boot/dts/qcom/sm6125.dtsi
new file mode 100644 (file)
index 0000000..2b37ce6
--- /dev/null
@@ -0,0 +1,566 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2021, Martin Botka <martin.botka@somainline.org>
+ */
+
+#include <dt-bindings/clock/qcom,gcc-sm6125.h>
+#include <dt-bindings/clock/qcom,rpmcc.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
+
+/ {
+       interrupt-parent = <&intc>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       chosen { };
+
+       clocks {
+               xo_board: xo-board {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <19200000>;
+                       clock-output-names = "xo_board";
+               };
+
+               sleep_clk: sleep-clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32000>;
+                       clock-output-names = "sleep_clk";
+               };
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               CPU0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       next-level-cache = <&L2_0>;
+                       L2_0: l2-cache {
+                               compatible = "cache";
+                       };
+               };
+
+               CPU1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x1>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       next-level-cache = <&L2_0>;
+               };
+
+               CPU2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x2>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       next-level-cache = <&L2_0>;
+               };
+
+               CPU3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x3>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1024>;
+                       next-level-cache = <&L2_0>;
+               };
+
+               CPU4: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x100>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1638>;
+                       next-level-cache = <&L2_1>;
+                       L2_1: l2-cache {
+                               compatible = "cache";
+                       };
+               };
+
+               CPU5: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x101>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1638>;
+                       next-level-cache = <&L2_1>;
+               };
+
+               CPU6: cpu@102 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x102>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1638>;
+                       next-level-cache = <&L2_1>;
+               };
+
+               CPU7: cpu@103 {
+                       device_type = "cpu";
+                       compatible = "qcom,kryo260";
+                       reg = <0x0 0x103>;
+                       enable-method = "psci";
+                       capacity-dmips-mhz = <1638>;
+                       next-level-cache = <&L2_1>;
+               };
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&CPU0>;
+                               };
+
+                               core1 {
+                                       cpu = <&CPU1>;
+                               };
+
+                               core2 {
+                                       cpu = <&CPU2>;
+                               };
+
+                               core3 {
+                                       cpu = <&CPU3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&CPU4>;
+                               };
+
+                               core1 {
+                                       cpu = <&CPU5>;
+                               };
+
+                               core2 {
+                                       cpu = <&CPU6>;
+                               };
+
+                               core3 {
+                                       cpu = <&CPU7>;
+                               };
+                       };
+               };
+       };
+
+       firmware {
+               scm: scm {
+                       compatible = "qcom,scm-sm6125", "qcom,scm";
+                       #reset-cells = <1>;
+               };
+       };
+
+       memory@40000000 {
+               /* We expect the bootloader to fill in the size */
+               reg = <0x0 0x40000000 0x0 0x0>;
+               device_type = "memory";
+       };
+
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       reserved_memory: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               hyp_mem: memory@45700000 {
+                       reg = <0x0 0x45700000 0x0 0x600000>;
+                       no-map;
+               };
+
+               xbl_aop_mem: memory@45e00000 {
+                       reg = <0x0 0x45e00000 0x0 0x140000>;
+                       no-map;
+               };
+
+               sec_apps_mem: memory@45fff000 {
+                       reg = <0x0 0x45fff000 0x0 0x1000>;
+                       no-map;
+               };
+
+               smem_mem: memory@46000000 {
+                       reg = <0x0 0x46000000 0x0 0x200000>;
+                       no-map;
+               };
+
+               reserved_mem1: memory@46200000 {
+                       reg = <0x0 0x46200000 0x0 0x2d00000>;
+                       no-map;
+               };
+
+               camera_mem: memory@4ab00000 {
+                       reg = <0x0 0x4ab00000 0x0 0x500000>;
+                       no-map;
+               };
+
+               modem_mem: memory@4b000000 {
+                       reg = <0x0 0x4b000000 0x0 0x7e00000>;
+                       no-map;
+               };
+
+               venus_mem: memory@52e00000 {
+                       reg = <0x0 0x52e00000 0x0 0x500000>;
+                       no-map;
+               };
+
+               wlan_msa_mem: memory@53300000 {
+                       reg = <0x0 0x53300000 0x0 0x200000>;
+                       no-map;
+               };
+
+               cdsp_mem: memory@53500000 {
+                       reg = <0x0 0x53500000 0x0 0x1e00000>;
+                       no-map;
+               };
+
+               adsp_pil_mem: memory@55300000 {
+                       reg = <0x0 0x55300000 0x0 0x1e00000>;
+                       no-map;
+               };
+
+               ipa_fw_mem: memory@57100000 {
+                       reg = <0x0 0x57100000 0x0 0x10000>;
+                       no-map;
+               };
+
+               ipa_gsi_mem: memory@57110000 {
+                       reg = <0x0 0x57110000 0x0 0x5000>;
+                       no-map;
+               };
+
+               gpu_mem: memory@57115000 {
+                       reg = <0x0 0x57115000 0x0 0x2000>;
+                       no-map;
+               };
+
+               cont_splash_mem: memory@5c000000 {
+                       reg = <0x0 0x5c000000 0x0 0x00f00000>;
+                       no-map;
+               };
+
+               dfps_data_mem: memory@5cf00000 {
+                       reg = <0x0 0x5cf00000 0x0 0x0100000>;
+                       no-map;
+               };
+
+               cdsp_sec_mem: memory@5f800000 {
+                       reg = <0x0 0x5f800000 0x0 0x1e00000>;
+                       no-map;
+               };
+
+               qseecom_mem: memory@5e400000 {
+                       reg = <0x0 0x5e400000 0x0 0x1400000>;
+                       no-map;
+               };
+
+               sdsp_mem: memory@f3000000 {
+                       reg = <0x0 0xf3000000 0x0 0x400000>;
+                       no-map;
+               };
+
+               adsp_mem: memory@f3400000 {
+                       reg = <0x0 0xf3400000 0x0 0x800000>;
+                       no-map;
+               };
+
+               qseecom_ta_mem: memory@13fc00000 {
+                       reg = <0x1 0x3fc00000 0x0 0x400000>;
+                       no-map;
+               };
+       };
+
+       rpm-glink {
+               compatible = "qcom,glink-rpm";
+
+               interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
+               qcom,rpm-msg-ram = <&rpm_msg_ram>;
+               mboxes = <&apcs_glb 0>;
+
+               rpm_requests: rpm-requests {
+                       compatible = "qcom,rpm-sm6125";
+                       qcom,glink-channels = "rpm_requests";
+
+                       rpmcc: clock-controller {
+                               compatible = "qcom,rpmcc-sm6125", "qcom,rpmcc";
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+
+       smem: smem {
+               compatible = "qcom,smem";
+               memory-region = <&smem_mem>;
+               hwlocks = <&tcsr_mutex 3>;
+       };
+
+       soc {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x00 0x00 0x00 0xffffffff>;
+               compatible = "simple-bus";
+
+               tcsr_mutex: hwlock@340000 {
+                       compatible = "qcom,tcsr-mutex";
+                       reg = <0x00340000 0x20000>;
+                       #hwlock-cells = <1>;
+               };
+
+               tlmm: pinctrl@500000 {
+                       compatible = "qcom,sm6125-tlmm";
+                       reg = <0x00500000 0x400000>,
+                               <0x00900000 0x400000>,
+                               <0x00d00000 0x400000>;
+                       reg-names = "west", "south", "east";
+                       interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       gpio-ranges = <&tlmm 0 0 134>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+
+                       sdc2_state_off: sdc2-off {
+                               clk {
+                                       pins = "sdc2_clk";
+                                       bias-disable;
+                                       drive-strength = <2>;
+                               };
+
+                               cmd {
+                                       pins = "sdc2_cmd";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+
+                               data {
+                                       pins = "sdc2_data";
+                                       bias-pull-up;
+                                       drive-strength = <2>;
+                               };
+                       };
+               };
+
+               gcc: clock-controller@1400000 {
+                       compatible = "qcom,gcc-sm6125";
+                       reg = <0x01400000 0x1f0000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+                       clock-names = "bi_tcxo", "sleep_clk";
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>, <&sleep_clk>;
+               };
+
+               hsusb_phy1: phy@1613000 {
+                       compatible = "qcom,msm8996-qusb2-phy";
+                       reg = <0x01613000 0x180>;
+                       #phy-cells = <0>;
+
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
+                                <&gcc GCC_AHB2PHY_USB_CLK>;
+                       clock-names = "ref", "cfg_ahb";
+
+                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+                       status = "disabled";
+               };
+
+               rpm_msg_ram: memory@45f0000 {
+                       compatible = "qcom,rpm-msg-ram";
+                       reg = <0x045f0000 0x7000>;
+               };
+
+               sdhc_1: sdhci@4744000 {
+                       compatible = "qcom,sm6125-sdhci", "qcom,sdhci-msm-v5";
+                       reg = <0x04744000 0x1000>, <0x04745000 0x1000>;
+                       reg-names = "hc", "core";
+
+                       interrupts = <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC1_AHB_CLK>,
+                               <&gcc GCC_SDCC1_APPS_CLK>,
+                               <&xo_board>;
+                       clock-names = "iface", "core", "xo";
+                       bus-width = <8>;
+                       non-removable;
+                       status = "disabled";
+               };
+
+               sdhc_2: sdhci@4784000 {
+                       compatible = "qcom,sm6125-sdhci", "qcom,sdhci-msm-v5";
+                       reg = <0x04784000 0x1000>;
+                       reg-names = "hc";
+
+                       interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+
+                       clocks = <&gcc GCC_SDCC2_AHB_CLK>,
+                               <&gcc GCC_SDCC2_APPS_CLK>,
+                               <&xo_board>;
+                       clock-names = "iface", "core", "xo";
+
+                       pinctrl-0 = <&sdc2_state_on>;
+                       pinctrl-1 = <&sdc2_state_off>;
+                       pinctrl-names = "default", "sleep";
+
+                       bus-width = <4>;
+                       status = "disabled";
+               };
+
+               usb3: usb@4ef8800 {
+                       compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
+                       reg = <0x04ef8800 0x400>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       clocks = <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+                               <&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
+                               <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                               <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
+                               <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
+                               <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
+
+                       assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+                       assigned-clock-rates = <19200000>, <66666667>;
+
+                       power-domains = <&gcc USB30_PRIM_GDSC>;
+                       qcom,select-utmi-as-pipe-clk;
+                       status = "disabled";
+
+                       usb3_dwc3: usb@4e00000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x04e00000 0xcd00>;
+                               interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
+                               phys = <&hsusb_phy1>;
+                               phy-names = "usb2-phy";
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
+                               maximum-speed = "high-speed";
+                               dr_mode = "peripheral";
+                       };
+               };
+
+               spmi_bus: spmi@1c40000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg =   <0x01c40000 0x1100>,
+                               <0x01e00000 0x2000000>,
+                               <0x03e00000 0x100000>,
+                               <0x03f00000 0xa0000>,
+                               <0x01c0a000 0x26000>;
+                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+                       interrupt-names = "periph_irq";
+                       interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
+                       qcom,ee = <0>;
+                       qcom,channel = <0>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+                       cell-index = <0>;
+               };
+
+               apcs_glb: mailbox@f111000 {
+                       compatible = "qcom,sm6125-apcs-hmss-global";
+                       reg = <0x0f111000 0x1000>;
+
+                       #mbox-cells = <1>;
+               };
+
+               timer@f120000 {
+                       compatible = "arm,armv7-timer-mem";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       reg = <0x0f120000 0x1000>;
+                       clock-frequency = <19200000>;
+
+                       frame@0f121000 {
+                               frame-number = <0>;
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                               <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f121000 0x1000>,
+                                     <0x0f122000 0x1000>;
+                       };
+
+                       frame@0f123000 {
+                               frame-number = <1>;
+                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f123000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@0f124000 {
+                               frame-number = <2>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f124000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f125000 {
+                               frame-number = <3>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f125000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f126000 {
+                               frame-number = <4>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f126000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f127000 {
+                               frame-number = <5>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f127000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       frame@f128000 {
+                               frame-number = <6>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               reg = <0x0f128000 0x1000>;
+                               status = "disabled";
+                       };
+               };
+
+               intc: interrupt-controller@f200000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x0f200000 0x20000>,
+                               <0x0f300000 0x100000>;
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 1 0xf08
+                               GIC_PPI 2 0xf08
+                               GIC_PPI 3 0xf08
+                               GIC_PPI 0 0xf08>;
+               clock-frequency = <19200000>;
+       };
+};
index 53edf75..b484371 100644 (file)
@@ -15,7 +15,7 @@
 
 / {
        model = "Qualcomm Technologies, Inc. SM8150 MTP";
-       compatible = "qcom,sm8150-mtp";
+       compatible = "qcom,sm8150-mtp", "qcom,sm8150";
 
        aliases {
                serial0 = &uart2;
index eef9d79..ef0232c 100644 (file)
@@ -13,6 +13,7 @@
 #include <dt-bindings/clock/qcom,gcc-sm8150.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8150.h>
 #include <dt-bindings/interconnect/qcom,osm-l3.h>
+#include <dt-bindings/interconnect/qcom,sm8150.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
@@ -52,6 +53,9 @@
                        dynamic-power-coefficient = <232>;
                        next-level-cache = <&L2_0>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD0>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
@@ -73,6 +77,9 @@
                        dynamic-power-coefficient = <232>;
                        next-level-cache = <&L2_100>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD1>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
@@ -92,6 +99,9 @@
                        dynamic-power-coefficient = <232>;
                        next-level-cache = <&L2_200>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD2>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <232>;
                        next-level-cache = <&L2_300>;
                        qcom,freq-domain = <&cpufreq_hw 0>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD3>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <369>;
                        next-level-cache = <&L2_400>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD4>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <369>;
                        next-level-cache = <&L2_500>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD5>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <369>;
                        next-level-cache = <&L2_600>;
                        qcom,freq-domain = <&cpufreq_hw 1>;
+                       operating-points-v2 = <&cpu4_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD6>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                        dynamic-power-coefficient = <421>;
                        next-level-cache = <&L2_700>;
                        qcom,freq-domain = <&cpufreq_hw 2>;
+                       operating-points-v2 = <&cpu7_opp_table>;
+                       interconnects = <&gem_noc MASTER_AMPSS_M0 &mc_virt SLAVE_EBI_CH0>,
+                                       <&osm_l3 MASTER_OSM_L3_APPS &osm_l3 SLAVE_OSM_L3>;
                        power-domains = <&CPU_PD7>;
                        power-domain-names = "psci";
                        #cooling-cells = <2>;
                };
        };
 
+       cpu0_opp_table: cpu0_opp_table {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               cpu0_opp1: opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-peak-kBps = <800000 9600000>;
+               };
+
+               cpu0_opp2: opp-403200000 {
+                       opp-hz = /bits/ 64 <403200000>;
+                       opp-peak-kBps = <800000 9600000>;
+               };
+
+               cpu0_opp3: opp-499200000 {
+                       opp-hz = /bits/ 64 <499200000>;
+                       opp-peak-kBps = <800000 12902400>;
+               };
+
+               cpu0_opp4: opp-576000000 {
+                       opp-hz = /bits/ 64 <576000000>;
+                       opp-peak-kBps = <800000 12902400>;
+               };
+
+               cpu0_opp5: opp-672000000 {
+                       opp-hz = /bits/ 64 <672000000>;
+                       opp-peak-kBps = <800000 15974400>;
+               };
+
+               cpu0_opp6: opp-768000000 {
+                       opp-hz = /bits/ 64 <768000000>;
+                       opp-peak-kBps = <1804000 19660800>;
+               };
+
+               cpu0_opp7: opp-844800000 {
+                       opp-hz = /bits/ 64 <844800000>;
+                       opp-peak-kBps = <1804000 19660800>;
+               };
+
+               cpu0_opp8: opp-940800000 {
+                       opp-hz = /bits/ 64 <940800000>;
+                       opp-peak-kBps = <1804000 22732800>;
+               };
+
+               cpu0_opp9: opp-1036800000 {
+                       opp-hz = /bits/ 64 <1036800000>;
+                       opp-peak-kBps = <1804000 22732800>;
+               };
+
+               cpu0_opp10: opp-1113600000 {
+                       opp-hz = /bits/ 64 <1113600000>;
+                       opp-peak-kBps = <2188000 25804800>;
+               };
+
+               cpu0_opp11: opp-1209600000 {
+                       opp-hz = /bits/ 64 <1209600000>;
+                       opp-peak-kBps = <2188000 31948800>;
+               };
+
+               cpu0_opp12: opp-1305600000 {
+                       opp-hz = /bits/ 64 <1305600000>;
+                       opp-peak-kBps = <3072000 31948800>;
+               };
+
+               cpu0_opp13: opp-1382400000 {
+                       opp-hz = /bits/ 64 <1382400000>;
+                       opp-peak-kBps = <3072000 31948800>;
+               };
+
+               cpu0_opp14: opp-1478400000 {
+                       opp-hz = /bits/ 64 <1478400000>;
+                       opp-peak-kBps = <3072000 31948800>;
+               };
+
+               cpu0_opp15: opp-1555200000 {
+                       opp-hz = /bits/ 64 <1555200000>;
+                       opp-peak-kBps = <3072000 40550400>;
+               };
+
+               cpu0_opp16: opp-1632000000 {
+                       opp-hz = /bits/ 64 <1632000000>;
+                       opp-peak-kBps = <3072000 40550400>;
+               };
+
+               cpu0_opp17: opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <3072000 43008000>;
+               };
+
+               cpu0_opp18: opp-1785600000 {
+                       opp-hz = /bits/ 64 <1785600000>;
+                       opp-peak-kBps = <3072000 43008000>;
+               };
+       };
+
+       cpu4_opp_table: cpu4_opp_table {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               cpu4_opp1: opp-710400000 {
+                       opp-hz = /bits/ 64 <710400000>;
+                       opp-peak-kBps = <1804000 15974400>;
+               };
+
+               cpu4_opp2: opp-825600000 {
+                       opp-hz = /bits/ 64 <825600000>;
+                       opp-peak-kBps = <2188000 19660800>;
+               };
+
+               cpu4_opp3: opp-940800000 {
+                       opp-hz = /bits/ 64 <940800000>;
+                       opp-peak-kBps = <2188000 22732800>;
+               };
+
+               cpu4_opp4: opp-1056000000 {
+                       opp-hz = /bits/ 64 <1056000000>;
+                       opp-peak-kBps = <3072000 25804800>;
+               };
+
+               cpu4_opp5: opp-1171200000 {
+                       opp-hz = /bits/ 64 <1171200000>;
+                       opp-peak-kBps = <3072000 31948800>;
+               };
+
+               cpu4_opp6: opp-1286400000 {
+                       opp-hz = /bits/ 64 <1286400000>;
+                       opp-peak-kBps = <4068000 31948800>;
+               };
+
+               cpu4_opp7: opp-1401600000 {
+                       opp-hz = /bits/ 64 <1401600000>;
+                       opp-peak-kBps = <4068000 31948800>;
+               };
+
+               cpu4_opp8: opp-1497600000 {
+                       opp-hz = /bits/ 64 <1497600000>;
+                       opp-peak-kBps = <4068000 40550400>;
+               };
+
+               cpu4_opp9: opp-1612800000 {
+                       opp-hz = /bits/ 64 <1612800000>;
+                       opp-peak-kBps = <4068000 40550400>;
+               };
+
+               cpu4_opp10: opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <4068000 43008000>;
+               };
+
+               cpu4_opp11: opp-1804800000 {
+                       opp-hz = /bits/ 64 <1804800000>;
+                       opp-peak-kBps = <6220000 43008000>;
+               };
+
+               cpu4_opp12: opp-1920000000 {
+                       opp-hz = /bits/ 64 <1920000000>;
+                       opp-peak-kBps = <6220000 49152000>;
+               };
+
+               cpu4_opp13: opp-2016000000 {
+                       opp-hz = /bits/ 64 <2016000000>;
+                       opp-peak-kBps = <7216000 49152000>;
+               };
+
+               cpu4_opp14: opp-2131200000 {
+                       opp-hz = /bits/ 64 <2131200000>;
+                       opp-peak-kBps = <8368000 49152000>;
+               };
+
+               cpu4_opp15: opp-2227200000 {
+                       opp-hz = /bits/ 64 <2227200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu4_opp16: opp-2323200000 {
+                       opp-hz = /bits/ 64 <2323200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu4_opp17: opp-2419200000 {
+                       opp-hz = /bits/ 64 <2419200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+       };
+
+       cpu7_opp_table: cpu7_opp_table {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               cpu7_opp1: opp-825600000 {
+                       opp-hz = /bits/ 64 <825600000>;
+                       opp-peak-kBps = <2188000 19660800>;
+               };
+
+               cpu7_opp2: opp-940800000 {
+                       opp-hz = /bits/ 64 <940800000>;
+                       opp-peak-kBps = <2188000 22732800>;
+               };
+
+               cpu7_opp3: opp-1056000000 {
+                       opp-hz = /bits/ 64 <1056000000>;
+                       opp-peak-kBps = <3072000 25804800>;
+               };
+
+               cpu7_opp4: opp-1171200000 {
+                       opp-hz = /bits/ 64 <1171200000>;
+                       opp-peak-kBps = <3072000 31948800>;
+               };
+
+               cpu7_opp5: opp-1286400000 {
+                       opp-hz = /bits/ 64 <1286400000>;
+                       opp-peak-kBps = <4068000 31948800>;
+               };
+
+               cpu7_opp6: opp-1401600000 {
+                       opp-hz = /bits/ 64 <1401600000>;
+                       opp-peak-kBps = <4068000 31948800>;
+               };
+
+               cpu7_opp7: opp-1497600000 {
+                       opp-hz = /bits/ 64 <1497600000>;
+                       opp-peak-kBps = <4068000 40550400>;
+               };
+
+               cpu7_opp8: opp-1612800000 {
+                       opp-hz = /bits/ 64 <1612800000>;
+                       opp-peak-kBps = <4068000 40550400>;
+               };
+
+               cpu7_opp9: opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <4068000 43008000>;
+               };
+
+               cpu7_opp10: opp-1804800000 {
+                       opp-hz = /bits/ 64 <1804800000>;
+                       opp-peak-kBps = <6220000 43008000>;
+               };
+
+               cpu7_opp11: opp-1920000000 {
+                       opp-hz = /bits/ 64 <1920000000>;
+                       opp-peak-kBps = <6220000 49152000>;
+               };
+
+               cpu7_opp12: opp-2016000000 {
+                       opp-hz = /bits/ 64 <2016000000>;
+                       opp-peak-kBps = <7216000 49152000>;
+               };
+
+               cpu7_opp13: opp-2131200000 {
+                       opp-hz = /bits/ 64 <2131200000>;
+                       opp-peak-kBps = <8368000 49152000>;
+               };
+
+               cpu7_opp14: opp-2227200000 {
+                       opp-hz = /bits/ 64 <2227200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp15: opp-2323200000 {
+                       opp-hz = /bits/ 64 <2323200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp16: opp-2419200000 {
+                       opp-hz = /bits/ 64 <2419200000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp17: opp-2534400000 {
+                       opp-hz = /bits/ 64 <2534400000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp18: opp-2649600000 {
+                       opp-hz = /bits/ 64 <2649600000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp19: opp-2745600000 {
+                       opp-hz = /bits/ 64 <2745600000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+
+               cpu7_opp20: opp-2841600000 {
+                       opp-hz = /bits/ 64 <2841600000>;
+                       opp-peak-kBps = <8368000 51609600>;
+               };
+       };
+
        firmware {
                scm: scm {
                        compatible = "qcom,scm-sm8150", "qcom,scm";
                                status = "disabled";
                        };
 
+                       spi0: spi@880000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x880000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi0_default>;
+                               interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c1: i2c@884000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00884000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi1: spi@884000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x884000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi1_default>;
+                               interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c2: i2c@888000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00888000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi2: spi@888000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x888000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi2_default>;
+                               interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c3: i2c@88c000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x0088c000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi3: spi@88c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x88c000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi3_default>;
+                               interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c4: i2c@890000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00890000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi4: spi@890000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x890000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi4_default>;
+                               interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c5: i2c@894000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00894000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi5: spi@894000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x894000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi5_default>;
+                               interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c6: i2c@898000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00898000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi6: spi@898000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x898000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi6_default>;
+                               interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c7: i2c@89c000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x0089c000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi7: spi@89c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0x89c000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi7_default>;
+                               interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
                };
 
                gpi_dma1: dma-controller@a00000 {
                                status = "disabled";
                        };
 
+                       spi8: spi@a80000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa80000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi8_default>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c9: i2c@a84000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a84000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi9: spi@a84000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa84000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi9_default>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c10: i2c@a88000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a88000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi10: spi@a88000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa88000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi10_default>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c11: i2c@a8c000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a8c000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi11: spi@a8c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa8c000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi11_default>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        uart2: serial@a90000 {
                                compatible = "qcom,geni-debug-uart";
                                reg = <0x0 0x00a90000 0x0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi12: spi@a90000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa90000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi12_default>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c16: i2c@94000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x0094000 0 0x4000>;
                                #size-cells = <0>;
                                status = "disabled";
                        };
+
+                       spi16: spi@a94000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xa94000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi16_default>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
                };
 
                gpi_dma2: dma-controller@c00000 {
                                status = "disabled";
                        };
 
+                       spi17: spi@c80000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc80000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi17_default>;
+                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c18: i2c@c84000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00c84000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi18: spi@c84000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc84000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi18_default>;
+                               interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c19: i2c@c88000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00c88000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi19: spi@c88000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc88000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi19_default>;
+                               interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c13: i2c@c8c000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00c8c000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi13: spi@c8c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc8c000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi13_default>;
+                               interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c14: i2c@c90000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00c90000 0 0x4000>;
                                status = "disabled";
                        };
 
+                       spi14: spi@c90000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc90000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi14_default>;
+                               interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        i2c15: i2c@c94000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00c94000 0 0x4000>;
                                #size-cells = <0>;
                                status = "disabled";
                        };
+
+                       spi15: spi@c94000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0 0xc94000 0 0x4000>;
+                               reg-names = "se";
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_spi15_default>;
+                               interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
+                               spi-max-frequency = <50000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
                };
 
                config_noc: interconnect@1500000 {
                ufs_mem_hc: ufshc@1d84000 {
                        compatible = "qcom,sm8150-ufshc", "qcom,ufshc",
                                     "jedec,ufs-2.0";
-                       reg = <0 0x01d84000 0 0x2500>;
+                       reg = <0 0x01d84000 0 0x2500>,
+                             <0 0x01d90000 0 0x8000>;
+                       reg-names = "std", "ice";
                        interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
                        phys = <&ufs_mem_phy_lanes>;
                        phy-names = "ufsphy";
                                "ref_clk",
                                "tx_lane0_sync_clk",
                                "rx_lane0_sync_clk",
-                               "rx_lane1_sync_clk";
+                               "rx_lane1_sync_clk",
+                               "ice_core_clk";
                        clocks =
                                <&gcc GCC_UFS_PHY_AXI_CLK>,
                                <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
                                <&rpmhcc RPMH_CXO_CLK>,
                                <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
                                <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
-                               <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>;
+                               <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>,
+                               <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
                        freq-table-hz =
                                <37500000 300000000>,
                                <0 0>,
                                <0 0>,
                                <0 0>,
                                <0 0>,
-                               <0 0>;
+                               <0 0>,
+                               <0 300000000>;
 
                        status = "disabled";
                };
                                };
                        };
 
+                       qup_spi0_default: qup-spi0-default {
+                               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+                               function = "qup0";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c1_default: qup-i2c1-default {
                                mux {
                                        pins = "gpio114", "gpio115";
                                };
                        };
 
+                       qup_spi1_default: qup-spi1-default {
+                               pins = "gpio114", "gpio115", "gpio116", "gpio117";
+                               function = "qup1";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c2_default: qup-i2c2-default {
                                mux {
                                        pins = "gpio126", "gpio127";
                                };
                        };
 
+                       qup_spi2_default: qup-spi2-default {
+                               pins = "gpio126", "gpio127", "gpio128", "gpio129";
+                               function = "qup2";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c3_default: qup-i2c3-default {
                                mux {
                                        pins = "gpio144", "gpio145";
                                };
                        };
 
+                       qup_spi3_default: qup-spi3-default {
+                               pins = "gpio144", "gpio145", "gpio146", "gpio147";
+                               function = "qup3";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c4_default: qup-i2c4-default {
                                mux {
                                        pins = "gpio51", "gpio52";
                                };
                        };
 
+                       qup_spi4_default: qup-spi4-default {
+                               pins = "gpio51", "gpio52", "gpio53", "gpio54";
+                               function = "qup4";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c5_default: qup-i2c5-default {
                                mux {
                                        pins = "gpio121", "gpio122";
                                };
                        };
 
+                       qup_spi5_default: qup-spi5-default {
+                               pins = "gpio119", "gpio120", "gpio121", "gpio122";
+                               function = "qup5";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c6_default: qup-i2c6-default {
                                mux {
                                        pins = "gpio6", "gpio7";
                                };
                        };
 
+                       qup_spi6_default: qup-spi6_default {
+                               pins = "gpio4", "gpio5", "gpio6", "gpio7";
+                               function = "qup6";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c7_default: qup-i2c7-default {
                                mux {
                                        pins = "gpio98", "gpio99";
                                };
                        };
 
+                       qup_spi7_default: qup-spi7_default {
+                               pins = "gpio98", "gpio99", "gpio100", "gpio101";
+                               function = "qup7";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c8_default: qup-i2c8-default {
                                mux {
                                        pins = "gpio88", "gpio89";
                                };
                        };
 
+                       qup_spi8_default: qup-spi8-default {
+                               pins = "gpio88", "gpio89", "gpio90", "gpio91";
+                               function = "qup8";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c9_default: qup-i2c9-default {
                                mux {
                                        pins = "gpio39", "gpio40";
                                };
                        };
 
+                       qup_spi9_default: qup-spi9-default {
+                               pins = "gpio39", "gpio40", "gpio41", "gpio42";
+                               function = "qup9";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c10_default: qup-i2c10-default {
                                mux {
                                        pins = "gpio9", "gpio10";
                                };
                        };
 
+                       qup_spi10_default: qup-spi10-default {
+                               pins = "gpio9", "gpio10", "gpio11", "gpio12";
+                               function = "qup10";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c11_default: qup-i2c11-default {
                                mux {
                                        pins = "gpio94", "gpio95";
                                };
                        };
 
+                       qup_spi11_default: qup-spi11-default {
+                               pins = "gpio92", "gpio93", "gpio94", "gpio95";
+                               function = "qup11";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c12_default: qup-i2c12-default {
                                mux {
                                        pins = "gpio83", "gpio84";
                                };
                        };
 
+                       qup_spi12_default: qup-spi12-default {
+                               pins = "gpio83", "gpio84", "gpio85", "gpio86";
+                               function = "qup12";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c13_default: qup-i2c13-default {
                                mux {
                                        pins = "gpio43", "gpio44";
                                };
                        };
 
+                       qup_spi13_default: qup-spi13-default {
+                               pins = "gpio43", "gpio44", "gpio45", "gpio46";
+                               function = "qup13";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c14_default: qup-i2c14-default {
                                mux {
                                        pins = "gpio47", "gpio48";
                                };
                        };
 
+                       qup_spi14_default: qup-spi14-default {
+                               pins = "gpio47", "gpio48", "gpio49", "gpio50";
+                               function = "qup14";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c15_default: qup-i2c15-default {
                                mux {
                                        pins = "gpio27", "gpio28";
                                };
                        };
 
+                       qup_spi15_default: qup-spi15-default {
+                               pins = "gpio27", "gpio28", "gpio29", "gpio30";
+                               function = "qup15";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c16_default: qup-i2c16-default {
                                mux {
                                        pins = "gpio86", "gpio85";
                                };
                        };
 
+                       qup_spi16_default: qup-spi16-default {
+                               pins = "gpio83", "gpio84", "gpio85", "gpio86";
+                               function = "qup16";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c17_default: qup-i2c17-default {
                                mux {
                                        pins = "gpio55", "gpio56";
                                };
                        };
 
+                       qup_spi17_default: qup-spi17-default {
+                               pins = "gpio55", "gpio56", "gpio57", "gpio58";
+                               function = "qup17";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c18_default: qup-i2c18-default {
                                mux {
                                        pins = "gpio23", "gpio24";
                                };
                        };
 
+                       qup_spi18_default: qup-spi18-default {
+                               pins = "gpio23", "gpio24", "gpio25", "gpio26";
+                               function = "qup18";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
+
                        qup_i2c19_default: qup-i2c19-default {
                                mux {
                                        pins = "gpio57", "gpio58";
                                        bias-disable;
                                };
                        };
+
+                       qup_spi19_default: qup-spi19-default {
+                               pins = "gpio55", "gpio56", "gpio57", "gpio58";
+                               function = "qup19";
+                               drive-strength = <6>;
+                               bias-disable;
+                       };
                };
 
                remoteproc_mpss: remoteproc@4080000 {
                        };
                };
 
-               dc_noc: interconnect@9160000 {
-                       compatible = "qcom,sm8150-dc-noc";
-                       reg = <0 0x09160000 0 0x3200>;
-                       #interconnect-cells = <1>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
-
-               gem_noc: interconnect@9680000 {
-                       compatible = "qcom,sm8150-gem-noc";
-                       reg = <0 0x09680000 0 0x3e200>;
-                       #interconnect-cells = <1>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
-
                usb_2_qmpphy: phy@88eb000 {
                        compatible = "qcom,sm8150-qmp-usb3-uni-phy";
                        reg = <0 0x088eb000 0 0x200>;
                        };
                };
 
+               dc_noc: interconnect@9160000 {
+                       compatible = "qcom,sm8150-dc-noc";
+                       reg = <0 0x09160000 0 0x3200>;
+                       #interconnect-cells = <1>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               gem_noc: interconnect@9680000 {
+                       compatible = "qcom,sm8150-gem-noc";
+                       reg = <0 0x09680000 0 0x3e200>;
+                       #interconnect-cells = <1>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
                usb_1: usb@a6f8800 {
                        compatible = "qcom,sm8150-dwc3", "qcom,dwc3";
                        reg = <0 0x0a6f8800 0 0x400>;
 
                        resets = <&gcc GCC_USB30_SEC_BCR>;
 
-                       usb_2_dwc3: dwc3@a800000 {
+                       usb_2_dwc3: usb@a800000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a800000 0 0xcd00>;
                                interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
index 4798368..8c15d9f 100644 (file)
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c14_default>;
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c15_default>;
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 1 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 1 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 1 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c16_default>;
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 2 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 2 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c17_default>;
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 3 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 3 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 3 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c18_default>;
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 4 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 4 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 4 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c19_default>;
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>,
+                                      <&gpi_dma2 1 5 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma2 0 5 QCOM_GPI_SPI>,
+                                      <&gpi_dma2 1 5 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
                };
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c0_default>;
                                interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c1_default>;
                                interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 1 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 1 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c2_default>;
                                interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 2 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 2 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c3_default>;
                                interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 3 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
                                interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 3 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c4_default>;
                                interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 4 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
                                interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 4 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 4 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c5_default>;
                                interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 5 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 5 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c6_default>;
                                interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 6 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 6 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
                                interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 6 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 6 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c7_default>;
                                interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma0 0 7 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 7 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
                                interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma0 0 7 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 7 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
                };
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c8_default>;
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c9_default>;
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 1 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 1 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c10_default>;
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 2 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 2 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c11_default>;
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 3 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 3 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 3 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c12_default>;
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 4 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 4 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
 
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c13_default>;
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 5 QCOM_GPI_I2C>;
+                               dma-names = "tx", "rx";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                               dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 5 QCOM_GPI_SPI>;
+                               dma-names = "tx", "rx";
                                power-domains = <&rpmhpd SM8250_CX>;
                                operating-points-v2 = <&qup_opp_table>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                status = "disabled";
                        };
                };
                                 <&gcc GCC_USB3_PHY_SEC_BCR>;
                        reset-names = "phy", "common";
 
-                       usb_2_ssphy: lane@88eb200 {
+                       usb_2_ssphy: lanes@88eb200 {
                                reg = <0 0x088eb200 0 0x200>,
                                      <0 0x088eb400 0 0x200>,
                                      <0 0x088eb800 0 0x800>;
 
                        resets = <&gcc GCC_USB30_PRIM_BCR>;
 
-                       usb_1_dwc3: dwc3@a600000 {
+                       usb_1_dwc3: usb@a600000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a600000 0 0xcd00>;
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
 
                        resets = <&gcc GCC_USB30_SEC_BCR>;
 
-                       usb_2_dwc3: dwc3@a800000 {
+                       usb_2_dwc3: usb@a800000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a800000 0 0xcd00>;
                                interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
                        power-domains = <&dispcc MDSS_GDSC>;
 
                        clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
-                                <&gcc GCC_DISP_HF_AXI_CLK>,
                                 <&gcc GCC_DISP_SF_AXI_CLK>,
                                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
-                       clock-names = "iface", "bus", "nrt_bus", "core";
+                       clock-names = "iface", "nrt_bus", "core";
 
                        assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>;
                        assigned-clock-rates = <460000000>;
                                              "iface",
                                              "bus";
 
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
+
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SM8250_MMCX>;
 
                                              "iface",
                                              "bus";
 
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
+
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SM8250_MMCX>;
 
                        };
                };
 
-               epss_l3: interconnect@18591000 {
+               epss_l3: interconnect@18590000 {
                        compatible = "qcom,sm8250-epss-l3";
                        reg = <0 0x18590000 0 0x1000>;
 
index f23a0cf..56093e2 100644 (file)
        firmware-name = "qcom/sm8350/modem.mbn";
 };
 
-&qupv3_id_1 {
+&qupv3_id_0 {
        status = "okay";
 };
 
index 9374044..bd95009 100644 (file)
        firmware-name = "qcom/sm8350/modem.mbn";
 };
 
-&qupv3_id_1 {
+&qupv3_id_0 {
        status = "okay";
 };
 
index 0d16392..e91cd8a 100644 (file)
                        #mbox-cells = <2>;
                };
 
-               qupv3_id_1: geniqup@9c0000 {
+               qupv3_id_0: geniqup@9c0000 {
                        compatible = "qcom,geni-se-qup";
                        reg = <0x0 0x009c0000 0x0 0x6000>;
                        clock-names = "m-ahb", "s-ahb";
                        };
                };
 
+               qupv3_id_1: geniqup@ac0000 {
+                       compatible = "qcom,geni-se-qup";
+                       reg = <0x0 0x00ac0000 0x0 0x6000>;
+                       clock-names = "m-ahb", "s-ahb";
+                       clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
+                                <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       status = "disabled";
+
+                       i2c13: i2c@a94000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0 0x00a94000 0 0x4000>;
+                               clock-names = "se";
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&qup_i2c13_default_state>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+               };
+
                apps_smmu: iommu@15000000 {
                        compatible = "qcom,sm8350-smmu-500", "arm,mmu-500";
                        reg = <0 0x15000000 0 0x100000>;
                        clocks = <&rpmhcc RPMH_IPA_CLK>;
                        clock-names = "core";
 
-                       interconnects = <&aggre2_noc MASTER_IPA &gem_noc SLAVE_LLCC>,
-                                       <&mc_virt MASTER_LLCC &mc_virt SLAVE_EBI1>,
+                       interconnects = <&aggre2_noc MASTER_IPA &mc_virt SLAVE_EBI1>,
                                        <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_IPA_CFG>;
-                       interconnect-names = "ipa_to_llcc",
-                                            "llcc_to_ebi1",
-                                            "appss_to_ipa";
+                       interconnect-names = "memory",
+                                            "config";
 
                        qcom,smem-states = <&ipa_smp2p_out 0>,
                                           <&ipa_smp2p_out 1>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        gpio-ranges = <&tlmm 0 0 204>;
+                       wakeup-parent = <&pdc>;
 
                        qup_uart3_default_state: qup-uart3-default-state {
                                rx {
                                        function = "qup3";
                                };
                        };
+
+                       qup_i2c13_default_state: qup-i2c13-default-state {
+                               mux {
+                                       pins = "gpio0", "gpio1";
+                                       function = "qup13";
+                               };
+
+                               config {
+                                       pins = "gpio0", "gpio1";
+                                       drive-strength = <2>;
+                                       bias-pull-up;
+                               };
+                       };
                };
 
                rng: rng@10d3000 {
 
                        resets = <&gcc GCC_USB30_PRIM_BCR>;
 
-                       usb_1_dwc3: dwc3@a600000 {
+                       usb_1_dwc3: usb@a600000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a600000 0 0xcd00>;
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
 
                        resets = <&gcc GCC_USB30_SEC_BCR>;
 
-                       usb_2_dwc3: dwc3@a800000 {
+                       usb_2_dwc3: usb@a800000 {
                                compatible = "snps,dwc3";
                                reg = <0 0x0a800000 0 0xcd00>;
                                interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
index 68e30e2..15a53b5 100644 (file)
@@ -63,4 +63,12 @@ dtb-$(CONFIG_ARCH_R8A77995) += r8a77995-draak.dtb
 
 dtb-$(CONFIG_ARCH_R8A779A0) += r8a779a0-falcon.dtb
 
+dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-salvator-xs.dtb
+dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-ulcb.dtb
+dtb-$(CONFIG_ARCH_R8A77951) += r8a779m1-ulcb-kf.dtb
+
+dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-salvator-xs.dtb
+dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-ulcb.dtb
+dtb-$(CONFIG_ARCH_R8A77961) += r8a779m3-ulcb-kf.dtb
+
 dtb-$(CONFIG_ARCH_R9A07G044) += r9a07g044l2-smarc.dtb
index e3c8b2f..2692cc6 100644 (file)
                compatible = "audio-graph-card";
                label = "rcar-sound";
                dais = <&rsnd_port0>, <&rsnd_port1>;
+               widgets = "Microphone", "Mic Jack",
+                         "Line", "Line In Jack",
+                         "Headphone", "Headphone Jack";
+               mic-det-gpio = <&gpio0 2 GPIO_ACTIVE_LOW>;
+               routing = "Headphone Jack", "HPOUTL",
+                        "Headphone Jack", "HPOUTR",
+                        "IN3R", "MICBIAS",
+                        "Mic Jack", "IN3R";
        };
 
        vccq_sdhi0: regulator-vccq-sdhi0 {
index 202c4fc..dde3a07 100644 (file)
@@ -20,6 +20,7 @@
        pinctrl-names = "default";
        phy-handle = <&phy0>;
        tx-internal-delay-ps = <2000>;
+       rx-internal-delay-ps = <1800>;
        status = "okay";
 
        phy0: ethernet-phy@0 {
index 78c121a..6f4fffa 100644 (file)
@@ -25,7 +25,7 @@
                i2c4 = &i2c4;
                i2c5 = &i2c5;
                i2c6 = &i2c6;
-               i2c7 = &i2c_dvfs;
+               i2c7 = &iic_pmic;
        };
 
        /*
                        status = "disabled";
                };
 
-               i2c_dvfs: i2c@e60b0000 {
+               iic_pmic: i2c@e60b0000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "renesas,iic-r8a774a1",
index 28c612c..0f7bdfc 100644 (file)
                        status = "disabled";
                };
 
-               i2c_dvfs: i2c@e60b0000 {
+               iic_pmic: i2c@e60b0000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "renesas,iic-r8a774b1",
index a5d4dce..d597772 100644 (file)
                        status = "disabled";
                };
 
-               i2c_dvfs: i2c@e60b0000 {
+               iic_pmic: i2c@e60b0000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "renesas,iic-r8a774c0";
-                       reg = <0 0xe60b0000 0 0x15>;
+                       compatible = "renesas,iic-r8a774c0",
+                                    "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 R8A774C0_PD_ALWAYS_ON>;
index 3e3b954..c6ca61a 100644 (file)
        clock-names = "du.0", "du.1", "du.2", "du.3",
                      "dclkin.0", "dclkin.1", "dclkin.2", "dclkin.3";
 };
-
-&ehci2 {
-       status = "okay";
-};
-
-&hdmi1 {
-       status = "okay";
-
-       ports {
-               port@1 {
-                       reg = <1>;
-                       rcar_dw_hdmi1_out: endpoint {
-                               remote-endpoint = <&hdmi1_con>;
-                       };
-               };
-               port@2 {
-                       reg = <2>;
-                       dw_hdmi1_snd_in: endpoint {
-                               remote-endpoint = <&rsnd_endpoint2>;
-                       };
-               };
-       };
-};
-
-&hdmi1_con {
-       remote-endpoint = <&rcar_dw_hdmi1_out>;
-};
-
-&ohci2 {
-       status = "okay";
-};
-
-&pfc {
-       usb2_pins: usb2 {
-               groups = "usb2";
-               function = "usb2";
-       };
-};
-
-&rcar_sound {
-       ports {
-               /* rsnd_port0/1 are described in salvator-common.dtsi */
-               rsnd_port2: port@2 {
-                       reg = <2>;
-                       rsnd_endpoint2: endpoint {
-                               remote-endpoint = <&dw_hdmi1_snd_in>;
-
-                               dai-format = "i2s";
-                               bitclock-master = <&rsnd_endpoint2>;
-                               frame-master = <&rsnd_endpoint2>;
-
-                               playback = <&ssi3>;
-                       };
-               };
-       };
-};
-
-&sata {
-       status = "okay";
-};
-
-&sound_card {
-       dais = <&rsnd_port0     /* ak4613 */
-               &rsnd_port1     /* HDMI0  */
-               &rsnd_port2>;   /* HDMI1  */
-};
-
-&usb2_phy2 {
-       pinctrl-0 = <&usb2_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
index dcaaf12..85f008e 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the H3ULCB Kingfisher board
+ * Device Tree Source for the H3ULCB Kingfisher board with R-Car H3 ES1.x
  *
  * Copyright (C) 2017 Renesas Electronics Corp.
  * Copyright (C) 2017 Cogent Embedded, Inc.
index 38a6d6a..5340579 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) board
+ * Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) board with R-Car H3 ES1.x
  *
  * Copyright (C) 2016 Renesas Electronics Corp.
  * Copyright (C) 2016 Cogent Embedded, Inc.
index b643d30..57eb881 100644 (file)
@@ -7,6 +7,8 @@
 
 #include "r8a77951.dtsi"
 
+#undef SOC_HAS_USB2_CH3
+
 &audma0 {
        iommus = <&ipmmu_mp1 0>, <&ipmmu_mp1 1>,
               <&ipmmu_mp1 2>, <&ipmmu_mp1 3>,
index cf2165b..d8e655b 100644 (file)
        clock-names = "du.0", "du.1", "du.2", "du.3",
                      "dclkin.0", "dclkin.1", "dclkin.2", "dclkin.3";
 };
-
-&ehci2 {
-       status = "okay";
-};
-
-&hdmi1 {
-       status = "okay";
-
-       ports {
-               port@1 {
-                       reg = <1>;
-                       rcar_dw_hdmi1_out: endpoint {
-                               remote-endpoint = <&hdmi1_con>;
-                       };
-               };
-               port@2 {
-                       reg = <2>;
-                       dw_hdmi1_snd_in: endpoint {
-                               remote-endpoint = <&rsnd_endpoint2>;
-                       };
-               };
-       };
-};
-
-&hdmi1_con {
-       remote-endpoint = <&rcar_dw_hdmi1_out>;
-};
-
-&ohci2 {
-       status = "okay";
-};
-
-&pfc {
-       usb2_pins: usb2 {
-               groups = "usb2";
-               function = "usb2";
-       };
-};
-
-&rcar_sound {
-       ports {
-               /* rsnd_port0/1 are described in salvator-common.dtsi */
-               rsnd_port2: port@2 {
-                       reg = <2>;
-                       rsnd_endpoint2: endpoint {
-                               remote-endpoint = <&dw_hdmi1_snd_in>;
-
-                               dai-format = "i2s";
-                               bitclock-master = <&rsnd_endpoint2>;
-                               frame-master = <&rsnd_endpoint2>;
-
-                               playback = <&ssi3>;
-                       };
-               };
-       };
-};
-
-&sata {
-       status = "okay";
-};
-
-&sound_card {
-       dais = <&rsnd_port0     /* ak4613 */
-               &rsnd_port1     /* HDMI0  */
-               &rsnd_port2>;   /* HDMI1  */
-};
-
-&usb2_phy2 {
-       pinctrl-0 = <&usb2_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
index 37202fc..7f9fa84 100644 (file)
        clock-names = "du.0", "du.1", "du.2", "du.3",
                      "dclkin.0", "dclkin.1", "dclkin.2", "dclkin.3";
 };
-
-&ehci2 {
-       status = "okay";
-};
-
-&ehci3 {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&hdmi1 {
-       status = "okay";
-
-       ports {
-               port@1 {
-                       reg = <1>;
-                       rcar_dw_hdmi1_out: endpoint {
-                               remote-endpoint = <&hdmi1_con>;
-                       };
-               };
-               port@2 {
-                       reg = <2>;
-                       dw_hdmi1_snd_in: endpoint {
-                               remote-endpoint = <&rsnd_endpoint2>;
-                       };
-               };
-       };
-};
-
-&hdmi1_con {
-       remote-endpoint = <&rcar_dw_hdmi1_out>;
-};
-
-&hsusb3 {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&ohci2 {
-       status = "okay";
-};
-
-&ohci3 {
-       dr_mode = "otg";
-       status = "okay";
-};
-
-&pca9654 {
-       pcie-sata-switch-hog {
-               gpio-hog;
-               gpios = <7 GPIO_ACTIVE_HIGH>;
-               output-low; /* enable SATA by default */
-               line-name = "PCIE/SATA switch";
-       };
-};
-
-&pfc {
-       usb2_pins: usb2 {
-               groups = "usb2";
-               function = "usb2";
-       };
-
-       /*
-        * - On Salvator-X[S], GP6_3[01] are connected to ADV7482 as irq pins
-        *   (when SW31 is the default setting on Salvator-XS).
-        * - If SW31 is the default setting, you cannot use USB2.0 ch3 on
-        *   r8a77951 with Salvator-XS.
-        *   Hence the SW31 setting must be changed like 2) below.
-        *   1) Default setting of SW31: ON-ON-OFF-OFF-OFF-OFF:
-        *      - Connect GP6_3[01] to ADV7842.
-        *   2) Changed setting of SW31: OFF-OFF-ON-ON-ON-ON:
-        *      - Connect GP6_3[01] to BD082065 (USB2.0 ch3's host power).
-        *      - Connect GP6_{04,21} to ADV7842.
-        */
-       usb2_ch3_pins: usb2_ch3 {
-               groups = "usb2_ch3";
-               function = "usb2_ch3";
-       };
-};
-
-&rcar_sound {
-       ports {
-               /* rsnd_port0/1 are described in salvator-common.dtsi */
-               rsnd_port2: port@2 {
-                       reg = <2>;
-                       rsnd_endpoint2: endpoint {
-                               remote-endpoint = <&dw_hdmi1_snd_in>;
-
-                               dai-format = "i2s";
-                               bitclock-master = <&rsnd_endpoint2>;
-                               frame-master = <&rsnd_endpoint2>;
-
-                               playback = <&ssi3>;
-                       };
-               };
-       };
-};
-
-/* SW12-7 must be set 'Off' (MD12 set to 1) which is not the default! */
-&sata {
-       status = "okay";
-};
-
-&sound_card {
-       dais = <&rsnd_port0     /* ak4613 */
-               &rsnd_port1     /* HDMI0  */
-               &rsnd_port2>;   /* HDMI1  */
-};
-
-&usb2_phy2 {
-       pinctrl-0 = <&usb2_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&usb2_phy3 {
-       pinctrl-0 = <&usb2_ch3_pins>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
index 11f943a..2e58a27 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the H3ULCB Kingfisher board
+ * Device Tree Source for the H3ULCB Kingfisher board with R-Car H3 ES2.0+
  *
  * Copyright (C) 2017 Renesas Electronics Corp.
  * Copyright (C) 2017 Cogent Embedded, Inc.
index 8ad8f2a..06d4e94 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) board
+ * Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) board with R-Car H3 ES2.0+
  *
  * Copyright (C) 2016 Renesas Electronics Corp.
  * Copyright (C) 2016 Cogent Embedded, Inc.
index 2e4c18b..1768a3e 100644 (file)
 
 #define CPG_AUDIO_CLK_I                R8A7795_CLK_S0D4
 
+#define SOC_HAS_HDMI1
+#define SOC_HAS_SATA
+#define SOC_HAS_USB2_CH2
+#define SOC_HAS_USB2_CH3
+
 / {
        compatible = "renesas,r8a7795";
        #address-cells = <2>;
index 2151c37..02d6136 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3ULCB Kingfisher board
+ * Device Tree Source for the M3ULCB Kingfisher board with R-Car M3-W
  *
  * Copyright (C) 2017 Renesas Electronics Corp.
  * Copyright (C) 2017 Cogent Embedded, Inc.
index d041042..4bfeb1d 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) board
+ * Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) board with R-Car M3-W
  *
  * Copyright (C) 2016 Renesas Electronics Corp.
  * Copyright (C) 2016 Cogent Embedded, Inc.
index 6ec9583..d66eb27 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3ULCB Kingfisher board
+ * Device Tree Source for the M3ULCB Kingfisher board with R-Car M3-W+
  *
  * Copyright (C) 2020 Eugeniu Rosca <rosca.eugeniu@gmail.com>
  */
index 294a055..70cf926 100644 (file)
@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) board with R-Car
- * M3-W+
+ * Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) board with R-Car M3-W+
  *
  * Copyright (C) 2020 Renesas Electronics Corp.
  */
index 91b501e..041473a 100644 (file)
                        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 {
                        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 {
                        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: iommu@e6740000 {
                        phy-mode = "rgmii";
                        rx-internal-delay-ps = <0>;
                        tx-internal-delay-ps = <0>;
+                       iommus = <&ipmmu_ds0 16>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
                        resets = <&cpg 314>;
+                       iommus = <&ipmmu_ds1 32>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
                        resets = <&cpg 313>;
+                       iommus = <&ipmmu_ds1 33>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
                        resets = <&cpg 312>;
+                       iommus = <&ipmmu_ds1 34>;
                        status = "disabled";
                };
 
                        max-frequency = <200000000>;
                        power-domains = <&sysc R8A77961_PD_ALWAYS_ON>;
                        resets = <&cpg 311>;
+                       iommus = <&ipmmu_ds1 35>;
                        status = "disabled";
                };
 
index 729756c..a1d3c8d 100644 (file)
        clock-names = "du.0", "du.1", "du.3",
                      "dclkin.0", "dclkin.1", "dclkin.3";
 };
-
-&pca9654 {
-       pcie-sata-switch-hog {
-               gpio-hog;
-               gpios = <7 GPIO_ACTIVE_HIGH>;
-               output-low; /* enable SATA by default */
-               line-name = "PCIE/SATA switch";
-       };
-};
-
-/* SW12-7 must be set 'Off' (MD12 set to 1) which is not the default! */
-&sata {
-       status = "okay";
-};
index 12aa08f..a601968 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3NULCB Kingfisher board
+ * Device Tree Source for the M3NULCB Kingfisher board with R-Car M3-N
  *
  * Copyright (C) 2018 Renesas Electronics Corp.
  * Copyright (C) 2018 Cogent Embedded, Inc.
index 964078b..71704b6 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the M3NULCB (R-Car Starter Kit Pro) board
+ * Device Tree Source for the M3NULCB (R-Car Starter Kit Pro) board with R-Car M3-N
  *
  * Copyright (C) 2018 Renesas Electronics Corp.
  * Copyright (C) 2018 Cogent Embedded, Inc.
index ad69da3..08df756 100644 (file)
@@ -14,6 +14,8 @@
 
 #define CPG_AUDIO_CLK_I                R8A77965_CLK_S0D4
 
+#define SOC_HAS_SATA
+
 / {
        compatible = "renesas,r8a77965";
        #address-cells = <2>;
index 5c84681..d24da54 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the Eagle board
+ * Device Tree Source for the Eagle board with R-Car V3M
  *
  * Copyright (C) 2016-2017 Renesas Electronics Corp.
  * Copyright (C) 2017 Cogent Embedded, Inc.
index 7bde0a5..edf7f2a 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the Condor board
+ * Device Tree Source for the Condor board with R-Car V3H
  *
  * Copyright (C) 2018 Renesas Electronics Corp.
  * Copyright (C) 2018 Cogent Embedded, Inc.
index 4715e4a..9c71460 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the ebisu board
+ * Device Tree Source for the Ebisu board with R-Car E3
  *
  * Copyright (C) 2018 Renesas Electronics Corp.
  */
@@ -8,6 +8,7 @@
 /dts-v1/;
 #include "r8a77990.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 
 / {
        model = "Renesas Ebisu board based on r8a77990";
                };
        };
 
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW4-1";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-2 {
+                       gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW4-2";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-3 {
+                       gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW4-3";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-4 {
+                       gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_4>;
+                       label = "SW4-4";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
        lvds-decoder {
                compatible = "thine,thc63lvd1024";
                vcc-supply = <&reg_3p3v>;
                rohm,ddr-backup-power = <0x1>;
                rohm,rstbmode-level;
        };
+
+       eeprom@50 {
+               compatible = "rohm,br24t01", "atmel,24c01";
+               reg = <0x50>;
+               pagesize = <8>;
+       };
 };
 
 &lvds0 {
                function = "intc_ex";
        };
 
+       keys_pins: keys {
+               pins = "GP_5_10", "GP_5_11", "GP_5_12", "GP_5_13";
+               bias-pull-up;
+       };
+
        pwm3_pins: pwm3 {
                groups = "pwm3_b";
                function = "pwm3";
index 4d0304b..0ea300a 100644 (file)
                i2c_dvfs: i2c@e60b0000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       compatible = "renesas,iic-r8a77990";
-                       reg = <0 0xe60b0000 0 0x15>;
+                       compatible = "renesas,iic-r8a77990",
+                                    "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 R8A77990_PD_ALWAYS_ON>;
index 6783c3a..1ac15aa 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the Draak board
+ * Device Tree Source for the Draak board with R-Car D3
  *
  * Copyright (C) 2016-2018 Renesas Electronics Corp.
  * Copyright (C) 2017 Glider bvba
@@ -9,6 +9,7 @@
 /dts-v1/;
 #include "r8a77995.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 
 / {
        model = "Renesas Draak board based on r8a77995";
                ethernet0 = &avb;
        };
 
+       audio_clkout: audio-clkout {
+               /*
+                * This is same as <&rcar_sound 0>
+                * but needed to avoid cs2000/rcar_sound probe dead-lock
+                */
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <12288000>;
+       };
+
        backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm1 0 50000>;
                };
        };
 
+       keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&keys_pins>;
+               pinctrl-names = "default";
+
+               key-1 {
+                       gpios = <&gpio4 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_1>;
+                       label = "SW56-1";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-2 {
+                       gpios = <&gpio4 13 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_2>;
+                       label = "SW56-2";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-3 {
+                       gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_3>;
+                       label = "SW56-3";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+               key-4 {
+                       gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_4>;
+                       label = "SW56-4";
+                       wakeup-source;
+                       debounce-interval = <20>;
+               };
+       };
+
        lvds-decoder {
                compatible = "thine,thc63lvd1024";
                vcc-supply = <&reg_3p3v>;
                regulator-always-on;
        };
 
+       sound_card: sound {
+               compatible = "audio-graph-card";
+
+               dais = <&rsnd_port0     /* ak4613 */
+                       /* HDMI is not yet supported */
+               >;
+       };
+
        vga {
                compatible = "vga-connector";
 
                #clock-cells = <0>;
                clock-frequency = <74250000>;
        };
+
+       x19_clk: x19 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+};
+
+&audio_clk_b {
+       /*
+        * X11 is connected to VI4_FIELD/SCIF_CLK/AUDIO_CLKB,
+        * and R-Car Sound uses AUDIO_CLKB.
+        * Note is that schematic indicates VI4_FIELD conection only
+        * not AUDIO_CLKB at SoC page.
+        * And this VI4_FIELD/SCIF_CLK/AUDIO_CLKB is connected to SW60.
+        * SW60 should be 1-2.
+        */
+
+       clock-frequency = <22579200>;
 };
 
 &avb {
        pinctrl-names = "default";
        status = "okay";
 
+       ak4613: codec@10 {
+               compatible = "asahi-kasei,ak4613";
+               #sound-dai-cells = <0>;
+               reg = <0x10>;
+               clocks = <&rcar_sound 0>; /* audio_clkout */
+
+               asahi-kasei,in1-single-end;
+               asahi-kasei,in2-single-end;
+               asahi-kasei,out1-single-end;
+               asahi-kasei,out2-single-end;
+               asahi-kasei,out3-single-end;
+               asahi-kasei,out4-single-end;
+               asahi-kasei,out5-single-end;
+               asahi-kasei,out6-single-end;
+
+               port {
+                       ak4613_endpoint: endpoint {
+                               remote-endpoint = <&rsnd_for_ak4613>;
+                       };
+               };
+       };
+
        composite-in@20 {
                compatible = "adi,adv7180cp";
                reg = <0x20>;
                interrupt-parent = <&gpio1>;
                interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
 
-               /* Depends on LVDS */
-               max-clock = <135000000>;
-               min-vrefresh = <50>;
-
                adi,input-depth = <8>;
                adi,input-colorspace = "rgb";
                adi,input-clock = "1x";
                };
        };
 
+       cs2000: clk-multiplier@4f {
+               #clock-cells = <0>;
+               compatible = "cirrus,cs2000-cp";
+               reg = <0x4f>;
+               clocks = <&audio_clkout>, <&x19_clk>; /* audio_clkout_1, x19 */
+               clock-names = "clk_in", "ref_clk";
+
+               assigned-clocks = <&cs2000>;
+               assigned-clock-rates = <24576000>; /* 1/1 divide */
+       };
+
        eeprom@50 {
                compatible = "rohm,br24t01", "atmel,24c01";
                reg = <0x50>;
                function = "i2c1";
        };
 
+       keys_pins: keys {
+               pins = "GP_4_12", "GP_4_13", "GP_4_14", "GP_4_15";
+               bias-pull-up;
+       };
+
        pwm0_pins: pwm0 {
                groups = "pwm0_c";
                function = "pwm0";
                power-source = <1800>;
        };
 
+       sound_pins: sound {
+               groups = "ssi34_ctrl", "ssi3_data", "ssi4_data_a";
+               function = "ssi";
+       };
+
+       sound_clk_pins: sound-clk {
+               groups = "audio_clk_a", "audio_clk_b",
+                        "audio_clkout", "audio_clkout1";
+               function = "audio_clk";
+       };
+
        usb0_pins: usb0 {
                groups = "usb0";
                function = "usb0";
        status = "okay";
 };
 
+&rcar_sound {
+       pinctrl-0 = <&sound_pins>, <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* Single DAI */
+       #sound-dai-cells = <0>;
+
+       /* audio_clkout0/1 */
+       #clock-cells = <1>;
+       clock-frequency = <12288000 11289600>;
+
+       status = "okay";
+
+       clocks = <&cpg CPG_MOD 1005>,
+                <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>,
+                <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                <&cs2000>, <&audio_clk_b>,
+                <&cpg CPG_CORE R8A77995_CLK_ZA2>;
+
+       ports {
+               rsnd_port0: port {
+                       rsnd_for_ak4613: endpoint {
+                               remote-endpoint = <&ak4613_endpoint>;
+                               dai-format = "left_j";
+                               bitclock-master = <&rsnd_for_ak4613>;
+                               frame-master = <&rsnd_for_ak4613>;
+                               playback = <&ssi3>, <&src5>, <&dvc0>;
+                               capture  = <&ssi4>, <&src6>, <&dvc1>;
+                       };
+               };
+       };
+};
+
 &rwdt {
        timeout-sec = <60>;
        status = "okay";
        status = "okay";
 };
 
+&ssi4 {
+       shared-pin;
+};
+
 &usb2_phy0 {
        pinctrl-0 = <&usb0_pins>;
        pinctrl-names = "default";
index 84dba37..16ad5fc 100644 (file)
        #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>;
+       };
+
        /* External CAN clock - to be overridden by boards that provide it */
        can_clk: can {
                compatible = "fixed-clock";
                        status = "disabled";
                };
 
+               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-r8a77995", "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 0xec740000 0 0x200>;  /* Audio DMAC peri peri*/
+                       reg-names = "scu", "adg", "ssiu", "ssi", "audmapp";
+
+                       clocks = <&cpg CPG_MOD 1005>,
+                                <&cpg CPG_MOD 1011>, <&cpg CPG_MOD 1012>,
+                                <&cpg CPG_MOD 1025>, <&cpg CPG_MOD 1026>,
+                                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                                <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>,
+                                <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>,
+                                <&audio_clk_a>, <&audio_clk_b>,
+                                <&cpg CPG_CORE R8A77995_CLK_ZA2>;
+                       clock-names = "ssi-all",
+                                     "ssi.4", "ssi.3",
+                                     "src.6", "src.5",
+                                     "mix.1", "mix.0",
+                                     "ctu.1", "ctu.0",
+                                     "dvc.0", "dvc.1",
+                                     "clk_a", "clk_b", "clk_i";
+                       power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 1005>,
+                                <&cpg 1011>, <&cpg 1012>;
+                       reset-names = "ssi-all",
+                                     "ssi.4", "ssi.3";
+                       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 = <&audma0 0xbc>;
+                                       dma-names = "tx";
+                               };
+                               dvc1: dvc-1 {
+                                       dmas = <&audma0 0xbe>;
+                                       dma-names = "tx";
+                               };
+                       };
+
+                       rcar_sound,mix {
+                               mix0: mix-0 { };
+                               mix1: mix-1 { };
+                       };
+
+                       rcar_sound,src {
+                               src5: src-5 {
+                                       interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x8f>, <&audma0 0xb2>;
+                                       dma-names = "rx", "tx";
+                               };
+                               src6: src-6 {
+                                       interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x91>, <&audma0 0xb4>;
+                                       dma-names = "rx", "tx";
+                               };
+                       };
+
+                       rcar_sound,ssi {
+                               ssi3: ssi-3 {
+                                       interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x07>, <&audma0 0x08>,
+                                              <&audma0 0x6f>, <&audma0 0x70>;
+                                       dma-names = "rx", "tx", "rxu", "txu";
+                               };
+                               ssi4: ssi-4 {
+                                       interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>;
+                                       dmas = <&audma0 0x09>, <&audma0 0x0a>,
+                                              <&audma0 0x71>, <&audma0 0x72>;
+                                       dma-names = "rx", "tx", "rxu", "txu";
+                               };
+                       };
+               };
+
+               audma0: dma-controller@ec700000 {
+                       compatible = "renesas,dmac-r8a77995",
+                                    "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 R8A77995_PD_ALWAYS_ON>;
+                       resets = <&cpg 502>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       iommus = <&ipmmu_mp 0>, <&ipmmu_mp 1>,
+                                <&ipmmu_mp 2>, <&ipmmu_mp 3>,
+                                <&ipmmu_mp 4>, <&ipmmu_mp 5>,
+                                <&ipmmu_mp 6>, <&ipmmu_mp 7>,
+                                <&ipmmu_mp 8>, <&ipmmu_mp 9>,
+                                <&ipmmu_mp 10>, <&ipmmu_mp 11>,
+                                <&ipmmu_mp 12>, <&ipmmu_mp 13>,
+                                <&ipmmu_mp 14>, <&ipmmu_mp 15>;
+               };
+
                ohci0: usb@ee080000 {
                        compatible = "generic-ohci";
                        reg = <0 0xee080000 0 0x100>;
index 687f019..dc671ff 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
- * Device Tree Source for the Falcon CPU and BreakOut boards
+ * Device Tree Source for the Falcon CPU and BreakOut boards with R-Car V3U
  *
  * Copyright (C) 2020 Renesas Electronics Corp.
  */
index 78ca75f..631d520 100644 (file)
                        #power-domain-cells = <1>;
                };
 
+               tsc: thermal@e6190000 {
+                       compatible = "renesas,r8a779a0-thermal";
+                       reg = <0 0xe6190000 0 0x200>,
+                             <0 0xe6198000 0 0x200>,
+                             <0 0xe61a0000 0 0x200>,
+                             <0 0xe61a8000 0 0x200>,
+                             <0 0xe61b0000 0 0x200>;
+                       clocks = <&cpg CPG_MOD 919>;
+                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
+                       resets = <&cpg 919>;
+                       #thermal-sensor-cells = <1>;
+               };
+
                tmu0: timer@e61e0000 {
                        compatible = "renesas,tmu-r8a779a0", "renesas,tmu";
                        reg = <0 0xe61e0000 0 0x30>;
                        status = "disabled";
                };
 
-               tsc: thermal@e6190000 {
-                       compatible = "renesas,r8a779a0-thermal";
-                       reg = <0 0xe6190000 0 0x200>,
-                             <0 0xe6198000 0 0x200>,
-                             <0 0xe61a0000 0 0x200>,
-                             <0 0xe61a8000 0 0x200>,
-                             <0 0xe61b0000 0 0x200>;
-                       clocks = <&cpg CPG_MOD 919>;
-                       power-domains = <&sysc R8A779A0_PD_ALWAYS_ON>;
-                       resets = <&cpg 919>;
-                       #thermal-sensor-cells = <1>;
-               };
-
                i2c0: i2c@e6500000 {
                        compatible = "renesas,i2c-r8a779a0",
                                     "renesas,rcar-gen3-i2c";
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m1-salvator-xs.dts
new file mode 100644 (file)
index 0000000..084b75b
--- /dev/null
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the Salvator-X 2nd version board with R-Car H3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77951-salvator-xs.dts
+ * Copyright (C) 2015-2017 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a779m1.dtsi"
+#include "salvator-xs.dtsi"
+
+/ {
+       model = "Renesas Salvator-X 2nd version board based on r8a779m1";
+       compatible = "renesas,salvator-xs", "renesas,r8a779m1",
+                    "renesas,r8a7795";
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x38000000>;
+       };
+
+       memory@500000000 {
+               device_type = "memory";
+               reg = <0x5 0x00000000 0x0 0x40000000>;
+       };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x0 0x40000000>;
+       };
+
+       memory@700000000 {
+               device_type = "memory";
+               reg = <0x7 0x00000000 0x0 0x40000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&cpg CPG_MOD 721>,
+                <&versaclock6 1>,
+                <&x21_clk>,
+                <&x22_clk>,
+                <&versaclock6 2>;
+       clock-names = "du.0", "du.1", "du.2", "du.3",
+                     "dclkin.0", "dclkin.1", "dclkin.2", "dclkin.3";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb-kf.dts
new file mode 100644 (file)
index 0000000..0baebc5
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the H3ULCB Kingfisher board with R-Car H3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77951-ulcb-kf.dts
+ * Copyright (C) 2017 Renesas Electronics Corp.
+ * Copyright (C) 2017 Cogent Embedded, Inc.
+ */
+
+#include "r8a779m1-ulcb.dts"
+#include "ulcb-kf.dtsi"
+
+/ {
+       model = "Renesas H3ULCB Kingfisher board based on r8a779m1";
+       compatible = "shimafuji,kingfisher", "renesas,h3ulcb",
+                    "renesas,r8a779m1", "renesas,r8a7795";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts b/arch/arm64/boot/dts/renesas/r8a779m1-ulcb.dts
new file mode 100644 (file)
index 0000000..e294b6b
--- /dev/null
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the H3ULCB (R-Car Starter Kit Premier) with R-Car H3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77951-ulcb.dts
+ *
+ * Copyright (C) 2016 Renesas Electronics Corp.
+ * Copyright (C) 2016 Cogent Embedded, Inc.
+ */
+
+/dts-v1/;
+#include "r8a779m1.dtsi"
+#include "ulcb.dtsi"
+
+/ {
+       model = "Renesas H3ULCB board based on r8a779m1";
+       compatible = "renesas,h3ulcb", "renesas,r8a779m1", "renesas,r8a7795";
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x0 0x38000000>;
+       };
+
+       memory@500000000 {
+               device_type = "memory";
+               reg = <0x5 0x00000000 0x0 0x40000000>;
+       };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x0 0x40000000>;
+       };
+
+       memory@700000000 {
+               device_type = "memory";
+               reg = <0x7 0x00000000 0x0 0x40000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&cpg CPG_MOD 721>,
+                <&versaclock5 1>,
+                <&versaclock5 3>,
+                <&versaclock5 4>,
+                <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.2", "du.3",
+                     "dclkin.0", "dclkin.1", "dclkin.2", "dclkin.3";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m1.dtsi b/arch/arm64/boot/dts/renesas/r8a779m1.dtsi
new file mode 100644 (file)
index 0000000..0e9b044
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car H3e-2G (R8A779M1) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77951.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m1", "renesas,r8a7795";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts b/arch/arm64/boot/dts/renesas/r8a779m3-salvator-xs.dts
new file mode 100644 (file)
index 0000000..4ab26fd
--- /dev/null
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the Salvator-X 2nd version board with R-Car M3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77961-salvator-xs.dts
+ * Copyright (C) 2018 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a779m3.dtsi"
+#include "salvator-xs.dtsi"
+
+/ {
+       model = "Renesas Salvator-X 2nd version board based on r8a779m3";
+       compatible = "renesas,salvator-xs", "renesas,r8a779m3",
+                    "renesas,r8a77961";
+
+       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>;
+       };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x1 0x00000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&versaclock6 1>,
+                <&x21_clk>,
+                <&versaclock6 2>;
+       clock-names = "du.0", "du.1", "du.2",
+                     "dclkin.0", "dclkin.1", "dclkin.2";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb-kf.dts
new file mode 100644 (file)
index 0000000..6bacee1
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the M3ULCB Kingfisher board with R-Car M3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77961-ulcb-kf.dts
+ * Copyright (C) 2020 Eugeniu Rosca <rosca.eugeniu@gmail.com>
+ */
+
+#include "r8a779m3-ulcb.dts"
+#include "ulcb-kf.dtsi"
+
+/ {
+       model = "Renesas M3ULCB Kingfisher board based on r8a779m3";
+       compatible = "shimafuji,kingfisher", "renesas,m3ulcb",
+                    "renesas,r8a779m3", "renesas,r8a77961";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts b/arch/arm64/boot/dts/renesas/r8a779m3-ulcb.dts
new file mode 100644 (file)
index 0000000..8f215a0
--- /dev/null
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the M3ULCB (R-Car Starter Kit Pro) with R-Car M3e-2G
+ *
+ * Copyright (C) 2021 Glider bv
+ *
+ * Based on r8a77961-ulcb.dts
+ * Copyright (C) 2020 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+#include "r8a779m3.dtsi"
+#include "ulcb.dtsi"
+
+/ {
+       model = "Renesas M3ULCB board based on r8a779m3";
+       compatible = "renesas,m3ulcb", "renesas,r8a779m3", "renesas,r8a77961";
+
+       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>;
+       };
+
+       memory@600000000 {
+               device_type = "memory";
+               reg = <0x6 0x00000000 0x1 0x00000000>;
+       };
+};
+
+&du {
+       clocks = <&cpg CPG_MOD 724>,
+                <&cpg CPG_MOD 723>,
+                <&cpg CPG_MOD 722>,
+                <&versaclock5 1>,
+                <&versaclock5 3>,
+                <&versaclock5 2>;
+       clock-names = "du.0", "du.1", "du.2",
+                     "dclkin.0", "dclkin.1", "dclkin.2";
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a779m3.dtsi b/arch/arm64/boot/dts/renesas/r8a779m3.dtsi
new file mode 100644 (file)
index 0000000..65bb618
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: (GPL-2.0 or MIT)
+/*
+ * Device Tree Source for the R-Car M3e-2G (R8A779M3) SoC
+ *
+ * Copyright (C) 2021 Glider bv
+ */
+
+#include "r8a77961.dtsi"
+
+/ {
+       compatible = "renesas,r8a779m3", "renesas,r8a77961";
+};
index 01482d2..5f3bc28 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       /* External CAN clock - to be overridden by boards that provide it */
+       can_clk: can {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+       };
+
        /* clock can be either from exclk or crystal oscillator (XIN/XOUT) */
        extal_clk: extal {
                compatible = "fixed-clock";
                        status = "disabled";
                };
 
+               canfd: can@10050000 {
+                       compatible = "renesas,r9a07g044-canfd", "renesas,rzg2l-canfd";
+                       reg = <0 0x10050000 0 0x8000>;
+                       interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "g_err", "g_recc",
+                                         "ch0_err", "ch0_rec", "ch0_trx",
+                                         "ch1_err", "ch1_rec", "ch1_trx";
+                       clocks = <&cpg CPG_MOD R9A07G044_CANFD_PCLK>,
+                                <&cpg CPG_CORE R9A07G044_CLK_P0_DIV2>,
+                                <&can_clk>;
+                       clock-names = "fck", "canfd", "can_clk";
+                       assigned-clocks = <&cpg CPG_CORE R9A07G044_CLK_P0_DIV2>;
+                       assigned-clock-rates = <50000000>;
+                       resets = <&cpg R9A07G044_CANFD_RSTP_N>,
+                                <&cpg R9A07G044_CANFD_RSTC_N>;
+                       reset-names = "rstp_n", "rstc_n";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       channel0 {
+                               status = "disabled";
+                       };
+                       channel1 {
+                               status = "disabled";
+                       };
+               };
+
+               i2c0: i2c@10058000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,riic-r9a07g044", "renesas,riic-rz";
+                       reg = <0 0x10058000 0 0x400>;
+                       interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 348 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 349 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD R9A07G044_I2C0_PCLK>;
+                       clock-frequency = <100000>;
+                       resets = <&cpg R9A07G044_I2C0_MRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@10058400 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,riic-r9a07g044", "renesas,riic-rz";
+                       reg = <0 0x10058400 0 0x400>;
+                       interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 356 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 357 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD R9A07G044_I2C1_PCLK>;
+                       clock-frequency = <100000>;
+                       resets = <&cpg R9A07G044_I2C1_MRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@10058800 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,riic-r9a07g044", "renesas,riic-rz";
+                       reg = <0 0x10058800 0 0x400>;
+                       interrupts = <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 364 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 365 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD R9A07G044_I2C2_PCLK>;
+                       clock-frequency = <100000>;
+                       resets = <&cpg R9A07G044_I2C2_MRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@10058c00 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "renesas,riic-r9a07g044", "renesas,riic-rz";
+                       reg = <0 0x10058c00 0 0x400>;
+                       interrupts = <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 372 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 373 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 376 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 377 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 378 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 379 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "tei", "ri", "ti", "spi", "sti",
+                                         "naki", "ali", "tmoi";
+                       clocks = <&cpg CPG_MOD R9A07G044_I2C3_PCLK>;
+                       clock-frequency = <100000>;
+                       resets = <&cpg R9A07G044_I2C3_MRST>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
+               adc: adc@10059000 {
+                       compatible = "renesas,r9a07g044-adc", "renesas,rzg2l-adc";
+                       reg = <0 0x10059000 0 0x400>;
+                       interrupts = <GIC_SPI 347 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&cpg CPG_MOD R9A07G044_ADC_ADCLK>,
+                                <&cpg CPG_MOD R9A07G044_ADC_PCLK>;
+                       clock-names = "adclk", "pclk";
+                       resets = <&cpg R9A07G044_ADC_PRESETN>,
+                                <&cpg R9A07G044_ADC_ADRST_N>;
+                       reset-names = "presetn", "adrst-n";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       channel@0 {
+                               reg = <0>;
+                       };
+                       channel@1 {
+                               reg = <1>;
+                       };
+                       channel@2 {
+                               reg = <2>;
+                       };
+                       channel@3 {
+                               reg = <3>;
+                       };
+                       channel@4 {
+                               reg = <4>;
+                       };
+                       channel@5 {
+                               reg = <5>;
+                       };
+                       channel@6 {
+                               reg = <6>;
+                       };
+                       channel@7 {
+                               reg = <7>;
+                       };
+               };
+
                cpg: clock-controller@11010000 {
                        compatible = "renesas,r9a07g044-cpg";
                        reg = <0 0x11010000 0 0x10000>;
                        status = "disabled";
                };
 
+               pinctrl: pin-controller@11030000 {
+                       compatible = "renesas,r9a07g044-pinctrl";
+                       reg = <0 0x11030000 0 0x10000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 0 392>;
+                       clocks = <&cpg CPG_MOD R9A07G044_GPIO_HCLK>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg R9A07G044_GPIO_RSTN>,
+                                <&cpg R9A07G044_GPIO_PORT_RESETN>,
+                                <&cpg R9A07G044_GPIO_SPARE_RESETN>;
+               };
+
                gic: interrupt-controller@11900000 {
                        compatible = "arm,gic-v3";
                        #interrupt-cells = <3>;
index 453ffce..eb1f3b8 100644 (file)
                label = "rcar-sound";
 
                dais = <&rsnd_port0     /* ak4613 */
-                       &rsnd_port1>;   /* HDMI0  */
+                       &rsnd_port1     /* HDMI0  */
+#ifdef SOC_HAS_HDMI1
+                       &rsnd_port2     /* HDMI1  */
+#endif
+                       >;
        };
 
        vbus0_usb2: regulator-vbus0-usb2 {
        remote-endpoint = <&rcar_dw_hdmi0_out>;
 };
 
+#ifdef SOC_HAS_HDMI1
+&hdmi1 {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       reg = <1>;
+                       rcar_dw_hdmi1_out: endpoint {
+                               remote-endpoint = <&hdmi1_con>;
+                       };
+               };
+               port@2 {
+                       reg = <2>;
+                       dw_hdmi1_snd_in: endpoint {
+                               remote-endpoint = <&rsnd_endpoint2>;
+                       };
+               };
+       };
+};
+
+&hdmi1_con {
+       remote-endpoint = <&rcar_dw_hdmi1_out>;
+};
+#endif /* SOC_HAS_HDMI1 */
+
 &hscif1 {
        pinctrl-0 = <&hscif1_pins>;
        pinctrl-names = "default";
                                playback = <&ssi2>;
                        };
                };
+
+#ifdef SOC_HAS_HDMI1
+               rsnd_port2: port@2 {
+                       reg = <2>;
+                       rsnd_endpoint2: endpoint {
+                               remote-endpoint = <&dw_hdmi1_snd_in>;
+
+                               dai-format = "i2s";
+                               bitclock-master = <&rsnd_endpoint2>;
+                               frame-master = <&rsnd_endpoint2>;
+
+                               playback = <&ssi3>;
+                       };
+               };
+#endif /* SOC_HAS_HDMI1 */
        };
 };
 
        status = "okay";
 };
 
+#ifdef SOC_HAS_SATA
+&sata {
+       status = "okay";
+};
+#endif /* SOC_HAS_SATA */
+
 &scif1 {
        pinctrl-0 = <&scif1_pins>;
        pinctrl-names = "default";
 
        status = "okay";
 };
+
+#ifdef SOC_HAS_USB2_CH2
+&ehci2 {
+       status = "okay";
+};
+
+&ohci2 {
+       status = "okay";
+};
+
+&pfc {
+       usb2_pins: usb2 {
+               groups = "usb2";
+               function = "usb2";
+       };
+};
+
+&usb2_phy2 {
+       pinctrl-0 = <&usb2_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+#endif /* SOC_HAS_USB2_CH2 */
index 717d427..08b9256 100644 (file)
                clock-names = "xin";
        };
 };
+
+#ifdef SOC_HAS_SATA
+&pca9654 {
+       pcie-sata-switch-hog {
+               gpio-hog;
+               gpios = <7 GPIO_ACTIVE_HIGH>;
+               output-low; /* enable SATA by default */
+               line-name = "PCIE/SATA switch";
+       };
+};
+
+/* SW12-7 must be set 'Off' (MD12 set to 1) which is not the default! */
+#endif /* SOC_HAS_SATA */
+
+#ifdef SOC_HAS_USB2_CH3
+&ehci3 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&hsusb3 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&ohci3 {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&pfc {
+       /*
+        * - On Salvator-X[S], GP6_3[01] are connected to ADV7482 as irq pins
+        *   (when SW31 is the default setting on Salvator-XS).
+        * - If SW31 is the default setting, you cannot use USB2.0 ch3 on
+        *   r8a77951 with Salvator-XS.
+        *   Hence the SW31 setting must be changed like 2) below.
+        *   1) Default setting of SW31: ON-ON-OFF-OFF-OFF-OFF:
+        *      - Connect GP6_3[01] to ADV7842.
+        *   2) Changed setting of SW31: OFF-OFF-ON-ON-ON-ON:
+        *      - Connect GP6_3[01] to BD082065 (USB2.0 ch3's host power).
+        *      - Connect GP6_{04,21} to ADV7842.
+        */
+       usb2_ch3_pins: usb2_ch3 {
+               groups = "usb2_ch3";
+               function = "usb2_ch3";
+       };
+};
+
+&usb2_phy3 {
+       pinctrl-0 = <&usb2_ch3_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+#endif /* SOC_HAS_USB2_CH3 */
index 02c3fdf..42d1d21 100644 (file)
                        reg = <0x4044 0x8>;
                        #phy-cells = <1>;
                };
+
+               epwm_tbclk: clock@4140 {
+                       compatible = "ti,am64-epwm-tbclk", "syscon";
+                       reg = <0x4130 0x4>;
+                       #clock-cells = <1>;
+               };
        };
 
        main_uart0: serial@2800000 {
                clock-names = "fck";
                max-functions = /bits/ 8 <1>;
        };
+
+       epwm0: pwm@23000000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23000000 0x0 0x100>;
+               power-domains = <&k3_pds 86 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 0>, <&k3_clks 86 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm1: pwm@23010000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23010000 0x0 0x100>;
+               power-domains = <&k3_pds 87 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 1>, <&k3_clks 87 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm2: pwm@23020000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23020000 0x0 0x100>;
+               power-domains = <&k3_pds 88 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 2>, <&k3_clks 88 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm3: pwm@23030000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23030000 0x0 0x100>;
+               power-domains = <&k3_pds 89 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 3>, <&k3_clks 89 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm4: pwm@23040000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23040000 0x0 0x100>;
+               power-domains = <&k3_pds 90 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 4>, <&k3_clks 90 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm5: pwm@23050000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23050000 0x0 0x100>;
+               power-domains = <&k3_pds 91 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 5>, <&k3_clks 91 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm6: pwm@23060000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23060000 0x0 0x100>;
+               power-domains = <&k3_pds 92 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 6>, <&k3_clks 92 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm7: pwm@23070000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23070000 0x0 0x100>;
+               power-domains = <&k3_pds 93 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 7>, <&k3_clks 93 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       epwm8: pwm@23080000 {
+               compatible = "ti,am64-epwm", "ti,am3352-ehrpwm";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23080000 0x0 0x100>;
+               power-domains = <&k3_pds 94 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&epwm_tbclk 8>, <&k3_clks 94 0>;
+               clock-names = "tbclk", "fck";
+       };
+
+       ecap0: pwm@23100000 {
+               compatible = "ti,am64-ecap", "ti,am3352-ecap";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23100000 0x0 0x60>;
+               power-domains = <&k3_pds 51 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 51 0>;
+               clock-names = "fck";
+       };
+
+       ecap1: pwm@23110000 {
+               compatible = "ti,am64-ecap", "ti,am3352-ecap";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23110000 0x0 0x60>;
+               power-domains = <&k3_pds 52 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 52 0>;
+               clock-names = "fck";
+       };
+
+       ecap2: pwm@23120000 {
+               compatible = "ti,am64-ecap", "ti,am3352-ecap";
+               #pwm-cells = <3>;
+               reg = <0x0 0x23120000 0x0 0x60>;
+               power-domains = <&k3_pds 53 TI_SCI_PD_EXCLUSIVE>;
+               clocks = <&k3_clks 53 0>;
+               clock-names = "fck";
+       };
 };
index 0307122..24ce494 100644 (file)
                        AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
                >;
        };
+
+       main_ecap0_pins_default: main-ecap0-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
+               >;
+       };
 };
 
 &main_uart0 {
        num-lanes = <1>;
        status = "disabled";
 };
+
+&ecap0 {
+       /* PWM is available on Pin 1 of header J12 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap0_pins_default>;
+};
+
+&ecap1 {
+       status = "disabled";
+};
+
+&ecap2 {
+       status = "disabled";
+};
+
+&epwm0 {
+       status = "disabled";
+};
+
+&epwm1 {
+       status = "disabled";
+};
+
+&epwm2 {
+       status = "disabled";
+};
+
+&epwm3 {
+       status = "disabled";
+};
+
+&epwm4 {
+       status = "disabled";
+};
+
+&epwm5 {
+       status = "disabled";
+};
+
+&epwm6 {
+       status = "disabled";
+};
+
+&epwm7 {
+       status = "disabled";
+};
+
+&epwm8 {
+       status = "disabled";
+};
index d3aa290..6b45cde 100644 (file)
                        AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
                >;
        };
+
+       main_ecap0_pins_default: main-ecap0-pins-default {
+               pinctrl-single,pins = <
+                       AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
+               >;
+       };
 };
 
 &mcu_uart0 {
 &pcie0_ep {
        status = "disabled";
 };
+
+&ecap0 {
+       /* PWM is available on Pin 1 of header J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap0_pins_default>;
+};
+
+&ecap1 {
+       status = "disabled";
+};
+
+&ecap2 {
+       status = "disabled";
+};
+
+&epwm0 {
+       status = "disabled";
+};
+
+&epwm1 {
+       status = "disabled";
+};
+
+&epwm2 {
+       status = "disabled";
+};
+
+&epwm3 {
+       status = "disabled";
+};
+
+&epwm4 {
+       /*
+        * EPWM4_A, EPWM4_B is available on Pin 32 and 33 on J4 (RPi hat)
+        * But RPi Hat will be used for other use cases, so marking epwm4 as disabled.
+        */
+       status = "disabled";
+};
+
+&epwm5 {
+       /*
+        * EPWM5_A, EPWM5_B is available on Pin 29 and 31 on J4 (RPi hat)
+        * But RPi Hat will be used for other use cases, so marking epwm5 as disabled.
+        */
+       status = "disabled";
+};
+
+&epwm6 {
+       status = "disabled";
+};
+
+&epwm7 {
+       status = "disabled";
+};
+
+&epwm8 {
+       status = "disabled";
+};
index 0728ad0..0bb17ff 100644 (file)
@@ -30,6 +30,7 @@
 #define R9A07G044_CLK_P2               19
 #define R9A07G044_CLK_AT               20
 #define R9A07G044_OSCCLK               21
+#define R9A07G044_CLK_P0_DIV2          22
 
 /* R9A07G044 Module Clocks */
 #define R9A07G044_CA55_SCLK            0